Vim autocmd неправильно отображает отображение - PullRequest
1 голос
/ 20 апреля 2019

Я хочу создать плагин, который сопоставляет определенное сопоставление localleader с вызовом функции.

У меня есть файл ftplugin / javascript.vim со следующим содержимым:

augroup javascript_pluginName
  au!
  echom "The plugin is loaded for JS"
  au FileType javascript nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>
augroup END

КогдаЯ открываю файл javascript, сообщение печатается, но затем проверка сопоставленных комбинаций показывает, что такого сопоставления нет.

Я понимаю, что nnoremap просто не будет отображаться поверх других отображений.Однако, если я оставлю только команду nnoremap, не помещая ее в autocmd, она будет отображаться правильно.Просто выполнение вызова в командном режиме также работает нормально.

Я заглянул в справку vim, чтобы увидеть, как использовать autocmd, и я не вижу никакой разницы между тем, как я его использую, и тем, что там объясняется.Книга «Учись, Вим трудным путем» тоже не помогла.

Что-то мне не хватает?Должен ли я как-то по-другому создать autocmd?

1 Ответ

1 голос
/ 20 апреля 2019

Я наконец выяснил, в чем проблема! По-видимому, согласно этой статье: https://vimways.org/2018/from-vimrc-to-vim/ если вы поместите код, специфичный для типа файла, в плагин типа файла, нет необходимости создавать для него autocmd.

Все шаблоны сокращены из-за общего поведения vim, устанавливающего тип файла на open и затем запускающего скрипты ftplugin, относящиеся к файлу.

Это означает, что в моем файле ftplugin / javascript.vim мне нужно только отображение:

nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>
...