Некоторые функции зависят от типа файла, и мне интересно, как лучше организовать эти функции. Должен ли я определить их в ftplugin
как локальные функции скрипта или поместить все в autoload
?
2 ответа
Это зависит.
Во-первых, будьте прагматичны. Если это просто короткая функция, и она используется только локально, у меня нет никаких сомнений в том, чтобы поместить их непосредственно в мой ~/.vimrc
или в ~/.vim/ftplugin/*.vim
. Последнее несколько неэффективно, потому что функция переопределяется для каждого открытого файла, который имеет тот же тип файла.
Вы уже знаете о функциях автозагрузки, и, конечно, это каноническое место для размещения пользовательских функций. Догматики будут настаивать на том, что (ft-) плагины содержат только конфигурацию, сопоставления, пользовательские команды и :autocmd
, а все функции должны быть помещены в ~/.vim/autoload/
. Я бы порекомендовал это для любой более длинной функции (или наборов функций, вызывающих друг друга) или всего, что вы собираетесь опубликовать, для повторного использования кем-то другим.
Для плагинов файловых типов я принял соглашение о размещении таких функций в ~/.vim/autoload/ft/{filetype}.vim
или ~/.vim/autoload/ft/{filetype}/{submodule}.vim
.
Это личное предпочтение. Мне нравится создавать файлы конфигурации vim, чтобы они были как можно более модульными. Я склонен разбивать похожие разделы и размещать их в отдельных файлах, чем исходный .vimrc
.
Вы можете взглянуть на пример из моей личной коллекции dotfile