Когда нужно определить конкретные команды / аббревиатуры / отображения, я всегда делю свой плагин на несколько файлов:
- основные функции, которые входят в плагин (ы) автозагрузки
- глобальные отображения / команды / сокращения, которые входят в "простой" плагин
- материал, относящийся к типу файла, который входит в ftplugins.
Бесполезный пример:
Плагин автозагрузки
" autoload/lh/ThePlugin.vim
let g:multby = 42
function lh#ThePlugin#fn(arg)
return a:arg * g:multby
endfunction
function lh#ThePlugin#inc_mult()
let g:multby += 1
endfunction
«Простой» плагин
" plugin/ThePlugin.vim
if exist('g:ThePlugin_loaded') | finish | endif
let g:ThePlugin_loaded = '1.0.0'
nnoremap £ :call lh#ThePlugin#inc_mult()
Один ftplugin
" ftplugin/cpp/cpp_ThePlugin.vim
if exist('b:ThePlugin_loaded') | finish | endif
let b:ThePlugin_loaded = '1.0.0'
inoremap <buffer> µ <c-r>=lh#ThePlugin#fn(12)<cr>
PS: обратите внимание на использование <buffer>
, чтобы не загрязнять другие типы файлов сопоставлениями, которые не имеют смысла, и не перекрывать ранее определенные (и определенные) сопоставления, которые имеют смысл.