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