我想创建一个插件,该插件将某些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,但看不到使用方式与此处所解释内容之间的任何区别。 “艰难学习Vim”这本书也没有帮助。
有什么我想念的吗?我应该以某种方式对autocmd进行构图吗?
答案 0 :(得分:1)
我终于发现了问题所在! 显然,根据本文所述:https://vimways.org/2018/from-vimrc-to-vim/,如果您将特定于文件类型的代码放入文件类型插件中,则无需为其创建autocmd。
通过vim在打开时设置文件类型然后运行与文件相关的ftplugin脚本的一般行为,所有样板都变得多余了。
这意味着在我的ftplugin / javascript.vim文件中,我只需要映射:
nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>