Лучший способ организовать настройки типов файлов в .vim и .vimrc? - PullRequest
45 голосов
/ 23 мая 2010

Я просматриваю свои файлы Vim Dot, чтобы привести их в порядок. Я заметил, что со временем я добавил различные специфичные для типа файла настройки различными противоречивыми способами. Давайте предположим, что я настраиваю для Python:

  • au BufRead,BufNewFile *.py (do something). Мне это не нравится, потому что некоторые файлы Python могут не иметь конца .py.

  • au FileType python (do something). Это кажется лучшим вариантом, потому что это не зависит от файла, имеющего завершение .py. Недостатком является то, что Vim не знает о некоторых типах файлов. Я могу заставить Vim распознавать дополнительные типы файлов, но у меня также есть несколько несовместимых способов сделать это: файл .vim/filetype.vim, другой в .vim/after/filetype.vim и различные команды set filetype в .vimrc.

  • Добавить файл .vim/ftplugin/python.vim с настройками, специфичными для типа файла. Я понимаю, что $VIMRUNTIME/ftplugin/python.vim может отменять любые настройки, которые я здесь устанавливаю. Одна проблема в том, что я не уверен, как это взаимодействует с .vim/filetype.vim и .vim/after/filetype.vim.

  • Добавить .vim/after/ftplugin/python.vim. Я понимаю, что это загружается после $VIMRUNTIME/ftplugin/python.vim, поэтому он может перезаписать настройки оттуда. Как и в предыдущем методе, я не уверен, как он взаимодействует с файлами filetype.vim.

Таким образом, у меня есть по крайней мере четыре способа сделать это, не говоря уже о файлах синтаксиса и специфичных для файлов плагинах. Мне кажется, что лучший способ сделать это - установить параметры, специфичные для моего типа файла, в after/ftplugin, чтобы они не перезаписывались, и filetypes.vim в after по той же причине.

Однако, прежде чем я продолжу, я хотел бы спросить, есть ли у кого-нибудь предложения о том, как лучше всего работать с настройками, специфичными для типов файлов.

1 Ответ

65 голосов
/ 23 мая 2010

Я храню свои специфичные для Python настройки в $HOME/.vim/ftplugin/python.vim, поскольку я ничего не делаю, чтобы конфликтовать с $VIMRUNTIME/ftplugin/python.vim.

Сохранение этих настроек в файле ftplugin сохраняет my .vimrc красивым, универсальным и простым в обслуживании (он все еще довольно большой после 10 лет работы Vimиспользование).

Если вы хотите отменить что настроено ftplugin с вашим распределением Vim, тогда $HOME/.vim/after/ftplugin/python.vim - это то, что вы хотите, так как оно читается after this.

Аналогично $HOME/.vim/filetype.vim будет получено до $VIMRUNTIME/filetype.vim, а это, в свою очередь, будет получено до $HOME/.vim/after/filetype.vim.

Вызов :scriptnames будетПеречислите все имена источников сценариев в том порядке, в котором они были получены.

:help filetype предоставляет довольно полную информацию обо всем этом.

...