У меня есть общий набор команд, которые я хочу запускать в нескольких плагинах различных типов файлов 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 обеспечивает всю гибкость, вы сами выбираете структуру, которая вам подходит.
function
и использоватьautocmd Filtype html, xml, xhtml call MySettings()
. Но это должно быть помещено в конец вашего.vimrc
, чтобы переопределить любые ранее настроенные настройки.. что вы подразумеваете под как мне загрузить его в отдельные файлы плагина? - person DOOM   schedule 06.05.2014source
, но я хочу сделать это независимым от системы способом, поэтому я не могу использовать абсолютные пути. - person brianmearns   schedule 06.05.2014