我想创建一个插件,将某个局部领导者映射到函数调用。
我有一个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,我看不出我使用它的方式与那里解释的内容之间有任何区别。"学习维姆的艰难方式"一书也没有帮助。
我错过了什么吗?我应该以某种方式构建自动 cmd 吗?
我终于发现了问题所在!显然,根据这篇文章:https://vimways.org/2018/from-vimrc-to-vim/如果您将特定于文件类型的代码放入文件类型插件中,则无需为其创建 autocmd。
vim 在打开时设置文件类型然后运行与文件相关的 ftplugin 脚本的一般行为使样板变得多余。
这意味着在我的ftplugin/javascript.vim文件中,我只需要映射:
nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>