Используйте общий код для плагина типа файла
У меня есть общий набор команд, которые я хочу запустить в нескольких различных плагинах типов файлов Vim. Например, для html
, xml
, а также xhtml
Есть несколько настроек, которые я хочу использовать совместно. Где лучше всего разместить этот общий код и как я могу загрузить его в отдельные файлы плагинов?
1 ответ
Общий код в целом
Для повторного использования (локально-буферных) команд или отображений вы можете либо определить их в (глобальной) функции, и вызвать ее из ftplugin:
" Put this in your .vimrc, or make it an autoload function.
function SetupCommands()
command! -buffer ...
endfunction
" in your ftplugin script:
call SetupCommands()
Или просто поместите их в отдельный скрипт, который вы :source
по запросу, например ~/.vim/mysetup.vim
:
" in your ftplugin script:
runtime mysetup.vim
Наследование типов файлов
Ваш вопрос, однако, касается особой формы повторного использования: XML, HTML и (X)HTML имеют много общего. Нет никакого авторитетного способа его структурировать: HTML - это форма XML (но с нарушенной валидностью), XHTML, вероятно, является и XML, и HTML.
Например, я определяю аббревиатуры для HTML в ~/.vim/ftplugin/html_abb.vim
:
inoremap <buffer> <C-CR> <lt>br>
и наследовать (и переопределять) это в ~/.vim/ftplugin/xhtml_abb.vim
:
runtime! ftplugin/html_abb.vim
inoremap <buffer> <C-CR> <lt>br/>
С :runtime
подход, вы даже можете смешивать и сопоставлять: определить инструменты для общего XML и наследовать их для HTML (даже если они могут жаловаться на синтаксис), но определить сокращения для HTML и наследовать их для XHTML, но не XML. Vim обеспечивает всю гибкость, и вы сами выбираете структуру, которая вам подходит.