
Я хотел бы узнать, есть ли способ в vim/vi предоставить другой файл vimrc. Я рассматриваю возможность управления двумя разными файлами vimrc. Для содержимого, которое я проверяю/проверяю в системе контроля версий, я хочу использовать другой набор команд, а не обычный в моем .vimrc
файле
Например.
Мой .vimrc
файл содержит команду для автоматического удаления любого завершающего пробела при сохранении файла. Но я не хочу, чтобы эта функция была активирована для определенных файлов.
Так есть ли способ предоставить другой файл vimrc (может быть, в командной строке, каждый раз передавая его в качестве параметра, например vim --vimrc=somefile file-to-open)?
решение1
Смотрите страницу руководства:
-u {vimrc} Использовать команды в файле {vimrc} для инициализации. Все остальные инициализации пропускаются. Используйте это для редактирования особого типа файлов. Его также можно использовать для пропуска всех инициализаций, указав имя "NONE". Подробнее см. ":help initialization" в vim.
решение2
Так есть ли способ предоставить другой файл vimrc (может быть, в командной строке, каждый раз передавая его в качестве параметра, например vim --vimrc=somefile file-to-open)?
Да, используйте -u
параметр:
vim -u ~/.my-custom-vimrc
От man vim
:
-u {vimrc} Use the commands in the file {vimrc} for initializations.
All the other initializations are skipped. Use this to
edit a special kind of files. It can also be used to skip
all initializations by giving the name "NONE". See ":help
initialization" within vim for more details.
Мой файл .vimrc содержит команду для автоматического удаления любого завершающего пробела при сохранении файла. Но я не хочу, чтобы эта функция была активирована для определенных файлов.
Есть другое решение, если вам нужна специальная обработка для некоторых известных типов файлов; используйте команду autocmd
в вашем vimrc. Например, вот моя конфигурация, зависящая от типа файла:
" Mapping of filetypes to options
au FileType freerad setl noexpandtab sts=0 sw=8
au FileType make setl noexpandtab sts=0
au FileType php let php_sql_query=1
au FileType php let php_htmlInStrings=1
au FileType python setl shiftwidth=2 expandtab
au FileType sql setl noexpandtab sts=0 sw=8
" global options I do not want any filetype to override
au FileType * setl formatoptions-=ro " don't continue comments
Если вам нужно применить параметры к чему-то, чему vim не назначает автоматически определенный тип файла, вы можете добавить собственное сопоставление (сделайте это перед использованием команды autocmd
):
" mapping of filenames to filetypes
au FileReadPost,BufReadPost,BufNewFile /etc/freeradius/* setl ft=freerad
au FileReadPost,BufReadPost,BufNewFile *.xt setl ft=xt
решение3
Вы также можете set exrc
в своем основном .vimrc заставить vim автоматически загружать .vimrc из текущего каталога.
решение4
Если вы храните каталог конфигурации Vim в Git (я надеюсь на это), вы можете использовать разные ветки и выполнять извлечение изменений между ними.