exrc
Опция :help 'exrc'
позволяет Vim получать свою конфигурацию из текущего каталога вместо ~/.vimrc
.Чтобы это работало, вам нужно открыть все файлы проекта из корневого каталога (Git).Кроме того, поскольку инициализация запускается только один раз при запуске Vim, вам все равно нужно определить :autocmd BufRead
(при условии, что вы открываете более одного файла на один сеанс Vim), но, по крайней мере, теперь вы имеете их в проекте, а не во всем мире.
плагины localrc
Плагин localrc улучшает это за счет использования конфигурации (проекта или даже в области каталогов) для каждого файла, который открываетсяв дереве каталогов.Вместо :autocmd
вам потребуется условное совпадение с текущим именем файла (if expand('%:t') == 'file1' ...
).
Существует несколько таких плагинов;Я могу порекомендовать плагин localrc (особенно с моими собственными улучшениями ), который даже допускает локальную конфигурацию для конкретного типа файла.
modeline (плагины)
Плагин localrc работает хорошо, если у вас одинаковая конфигурация для (нескольких) наборов файлов.Если я вас правильно понимаю, у вас есть отдельные команды для отдельных файлов и небольшое дублирование.Для этого было бы неплохо :help modeline
(если это нормально, добавить комментарий к файлам, то есть).К сожалению (из соображений безопасности) Vim позволяет устанавливать только опции (например, 'syntax'
или 'textwidth'
);Вы не можете выполнять произвольные команды.Для ваших примеров команд (:syntax off
, :set number
) это будет работать, хотя:
/* vim: syntax= number */
modeline с составным типом файла
Если вам нужна увеличенная моделин, которая также можетвыполнив любую команду Vim или для дупликации набора настроек для более чем одного конкретного файла, вы можете определить пользовательский тип файла и установить его как составной тип файла в строке состояния, например,
# vim: set ft=c.kAndRstyle
, а затем настройте параметры в ~/.vim/ftplugin/kAndRstyle.vim
.Единственным недостатком здесь является то, что вы должны явно упомянуть оригинальный синтаксис в modeline.
плагины modeline
Некоторые плагины (среди них мой плагин ModelineCommands ; некоторыеальтернативы перечислены на его странице плагина) расширить синтаксис моделин, чтобы позволить устанавливать переменные Vim или даже выполнять произвольные команды Vim, непосредственно в самой моделине.
сопутствующий Vimscript
Для истинного однозначногоВ одном сопоставлении вы можете автоматически получить файл Vimscript, который находится рядом с открытым файлом, с помощью следующей ловушки:
" Automatically source an eponymous %:r.vim or %.vim if it exists, as a
" bulked-up modeline and to provide file-specific customizations.
function! s:AutoSource()
let l:testedScripts = [expand('<afile>') . '.vim']
if expand('<afile>:e') !=# 'vim' " Don't source the edited Vimscript file itself.
call add(l:testedScripts, expand('<afile>:r') . '.vim')
endif
for l:filespec in l:testedScripts
if filereadable(l:filespec)
try
execute 'source' fnameescape(l:filespec)
catch /^Vim\%((\a\+)\)\=:/
echomsg v:exception
endtry
endif
endfor
endfunction
augroup AutoSource
autocmd! BufNewFile,BufRead * nested call <SID>AutoSource()
augroup END