vim
Настройка Vim
Поиск…
Файл vimrc
Файл .vimrc
(произносится как Vim-wreck) является файлом конфигурации Vim. Он содержит команды, которые будут выполняться Vim при каждом запуске.
По умолчанию файл пуст или не существует; вы можете использовать его для настройки среды Vim.
Чтобы узнать, где Vim ожидает, что файл vimrc будет сохранен, откройте Vim и запустите:
:echo $MYVIMRC
Unix: в системе Unix, такой как Mac или Linux, ваш vimrc будет вызываться .vimrc
и обычно находится в вашем домашнем каталоге ( $HOME/.vimrc
).
Windows: в Windows он будет называться _vimrc
и расположен в вашем домашнем каталоге ( %HOMEPATH%/_vimrc
).
При запуске Vim будет искать в нескольких местах файл vimrc. Первый, который существует, используется, остальные игнорируются. Полную информацию см :h $MYVIMRC
документации по документации :h $MYVIMRC
.
Какие варианты я могу использовать?
Если вы не знаете, какие параметры вы должны использовать, вас может заинтересовать команда :options
.
Это откроет разделение со всеми перечисленными опциями Vim и отображением их текущего значения. Есть 26 разделов для отображения всех параметров, которые вы можете попробовать.
например
4 displaying text
scroll number of lines to scroll for CTRL-U and CTRL-D
(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap
...
В строке значений (например, set nowrap
) вы можете нажать CR для переключения значения (если это двоичное значение). В строке опций (например, wrap long line wrap
) вы можете нажать CR, чтобы получить доступ к документации для этой опции.
Файлы и каталоги
Что бы вы ни делали, чтобы настроить Vim, он НИКОГДА не должен происходить за пределами $HOME
:
- на Linux, BSD и Cygwin,
$HOME
обычно/home/username/
, - на Mac OS X,
$HOME
есть/Users/username/
, - на Windows,
$HOME
обычно являетсяC:\Users\username\
.
Каноническое расположение вашего vimrc
и вашего каталога vim
находится в корне каталога $HOME
:
на Unix-подобных системах
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directory
в Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
Приведенная выше схема гарантированно будет работать, теперь и в будущем.
Vim 7.4 позволил сохранить ваш прекрасный vimrc
внутри вашего каталога vim
. Это действительно хорошая идея, хотя бы потому, что она облегчает перемещение вашей конфигурации.
Если вы используете только 7.4, достаточно будет следующего:
на Unix-подобных системах
$HOME/.vim/vimrc
в Windows
$HOME\vimfiles\vimrc
Если вы хотите получить преимущества автономного vim/
но использовать как 7.4, так и более старую версию, или только более старую версию, самым простым и перспективным решением является установка этой строки и только этой строки:
runtime vimrc
в этом файле:
на Unix-подобных системах
$HOME/.vimrc
в Windows
$HOME\_vimrc
и сделайте свою конфигурацию в $HOME/.vim/vimrc
или $HOME\vimfiles\vimrc
.
Опции
Существует три варианта:
- boolean options,
- строки,
- число вариантов.
Чтобы проверить значение параметра,
- use
:set option?
для проверки значения параметра, - use
:verbose set option?
чтобы увидеть, где он был последним.
Настройка логических параметров
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
Настройка параметров строки
set stroption=baz " baz
set stroption+=buzz " baz,buzz
set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz
set stroption= " Unset stroption.
set stroption& " Reset stroption to its default value.
Настройка параметров
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Использование выражения как значения
используя конкатенацию:
execute "set stroption=" . my_variable
используя
:let
:let &stroption = my_variable
См . :help :set
and :help :let
.
Отображения
- Не помещайте комментарии после сопоставлений, это сломает вещи.
- Используйте
:map <F6>
чтобы увидеть, что отображается в<F6>
и в каком режиме. - Используйте
:verbose map <F6>
чтобы увидеть, где он был последним. -
:map
и:map!
слишком общие. Использование:n[nore]map
для сопоставлений нормального режима:i[nore]map
для режима вставки;:x[nore]map
для визуального режима и т. Д.
Рекурсивные отображения
Используйте рекурсивные сопоставления только в том случае, если вы собираетесь использовать другие сопоставления в ваших сопоставлениях:
nnoremap b B
nmap <key> db
В этом примере b
работает как B
в нормальном режиме. Поскольку мы используем b
в рекурсивном отображении, нажатие <key>
будет работать как dB
, а не как db
.
Нерекурсивные отображения
Используйте нерекурсивные сопоставления только в том случае, если вы намерены использовать команды по умолчанию в своих сопоставлениях, что почти всегда то, что вы хотите:
nnoremap <key> db
В этом примере мы используем b
в нерекурсивном сопоставлении, поэтому нажатие клавиши всегда будет работать как db
, будем ли мы переназначать b
или нет.
Выполнение команды из сопоставления
nnoremap <key> :MyCommand<CR>
Выполнение нескольких команд из сопоставления
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Вызов функции из отображения
nnoremap <key> :call SomeFunction()<CR>
Отображение сопоставления <Plug>
map <key> <Plug>name_of_mapping
Смотрите :help map-commands
:help key-notation
и :help <plug>
.
см. « Сопоставление ключей» в Vim для дальнейшего чтения
переменные
Как и большинство языков сценариев, vimscript имеет переменные.
Можно определить переменную с помощью команды :let
:
let variable = value
и удалите его с помощью :unlet
:
unlet variable
В Vim переменные могут быть ограничены добавлением одной буквы и двоеточия к их имени. Авторы плагинов используют эту функцию для имитации параметров:
let g:plugin_variable = 1
См . :help internal-variables
.
команды
- Не забывайте, что Bim позволит Vim перезаписать эту команду при следующем перезагрузке vimrc.
- Пользовательские команды должны начинаться с символа верхнего регистра.
Примеры
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- См .
:help user-commands
.
функции
- Не забывайте взрыва, чтобы позволить Vim перезаписать эту функцию при следующем перезагрузке скрипта, где определена функция.
- Пользовательские функции должны начинаться либо с символа верхнего регистра (глобальные функции), либо с помощью
s:
(локальных функций сценария), либо они должны иметь префикс имени, связанного с плагином автозагрузки, где они определены (например, в{&rtp}/autoload/foo/bar.vim
мы могли бы определитьfoo#bar#functionname()
). - Чтобы иметь возможность использовать параметры в функции, используйте
a:parameter_name
. Функции Variadic могут быть определены с помощью многоточия...
, для доступа к параметрам используйтеa:000
(список всех параметров) илиa:0
(количество параметров, равноеlen(a:000)
),a:1
первый неназванный параметры и т. д. - Функции можно вызвать так
:call MyFunction(param1, param2)
- Каждая строка в функции неявно начинается с a
:
таким образом, все команды представляют собой команды двоеточия - Чтобы предотвратить продолжение выполнения функции в случае ошибки, лучше всего аннотировать подпись функции с
abort
пример
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Функции скрипта
Если вы только планируете использовать свою функцию в файле, где она определена (либо потому, что вы нарушили большую функцию в небольших частях, либо потому, что будете использовать ее в команде, сопоставление, ...), вы можете использовать префикс он с s:
избегая засорения вашего глобального пространства имен бесполезными внутренними функциями:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
Использование s: функций из отображений
Если ваша локальная функция скрипта будет использоваться при сопоставлении, вам необходимо ссылаться на нее с помощью специального префикса <SID>
:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Смотрите :help user-functions
.
Обратите внимание, однако, что с Vim 7 считается лучшей практикой определять сокращения сокращений, команды и меню в (ft) плагинах и определять функции в плагинах автозагрузки - за исключением функций, которые плагины должны использовать при загрузке. Это означает, что в настоящее время необходимость вызывать скрипты локальных функций из сопоставлений не так уместна, как раньше.
Группы автокоманд
- Группы Autocommand подходят для организации, но они также могут быть полезны для отладки. Думайте о них как о небольших пространствах имен, которые вы можете включить / отключить по своему усмотрению.
пример
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit
" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END
См . :help autocommand
.
Conditionals
if v:version >= 704
" Do something if Vim is the right version.
endif
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
См. Раздел :help has-patch
и :help feature-list
.
Параметры настройки
Обычно вы должны использовать :set
чтобы настроить параметры по своему вкусу в вашем .vimrc
. Существует много вариантов, которые можно изменить.
Например, чтобы использовать пробелы для отступов:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Подсветка синтаксиса
Выключение подсветки синтаксиса, когда у терминала есть цвета
if &t_Co > 2 || has("gui_running")
syntax on
end
Показать конечные пробелы и вкладки. Отображение вкладок может быть особенно полезно при поиске ошибок в Make-файлах.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Цветовые схемы
Vim поставляется с несколькими предустановленными цветовыми схемами. В Linux цветовые схемы, которые поставляются с Vim, хранятся в /usr/share/vim/vim74/colors/
(где 74 - ваш номер версии, без периодов); MacVim хранит их в /Applications/MacVim.app/Contents/Resources/vim/runtime/colors
.
Изменение цветовых схем
Команда colorscheme
переключает текущую цветовую схему.
Например, чтобы установить цветовую схему «robokai»:
:colorscheme robokai
Цветовая схема по default
креативно названа по default
, поэтому, чтобы вернуться к ней, используйте
:colorscheme default
Чтобы просмотреть все установленные в настоящее время цветовые схемы, введите :colorscheme
затем пробел, а затем вкладку или ctrl d .
Установка цветовых схем
Пользовательские цветовые схемы могут быть помещены в ~/.vim/colors/
. Как только цветовая схема будет добавлена в этот каталог, она появится как опция команды colorscheme
.
Чтобы найти новые цветовые схемы, есть такие сайты, как vimcolors, которые содержат множество цветовых схем. Существуют также инструменты, такие как vim.ink и Vivify, чтобы помочь вам в создании собственных цветовых схем или вы можете создать их вручную.
Переключить строку перечислить
Чтобы включить - введите:
:set number
или :set nu
.
Чтобы отключить - введите:
:set nonumber
или :set nonu
.
Чтобы включить перечисление относительно местоположения курсора - введите:
:set relativenumber
.
Чтобы отключить перечисление относительно местоположения курсора - введите:
:set norelativenumber
.
Примечание. Чтобы изменить, показывает ли текущая строка фактический номер строки или 0
, используйте :set number
и :set nonumber
commands, в то время как атрибут relativenumber
активен.
Плагины
Плагины Vim - это аддоны, которые можно использовать для изменения или улучшения функциональности vim.
Есть хороший список плагинов на vimawesome