Vim autocmd无法正确映射映射

时间:2019-04-20 11:22:11

标签: vim file-type autocmd

我想创建一个插件,该插件将某些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进行构图吗?

1 个答案:

答案 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>