Используйте общий код для плагина типа файла

У меня есть общий набор команд, которые я хочу запустить в нескольких различных плагинах типов файлов 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 обеспечивает всю гибкость, и вы сами выбираете структуру, которая вам подходит.

Другие вопросы по тегам