1

我想创建一个插件,将某个 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,但我看不出我使用它的方式与那里解释的内容之间有什么区别。“Learn Vim the Hard Way”一书也没有帮助。

有什么我想念的吗?我应该以不同的方式构建 autocmd 吗?

4

1 回答 1

1

我终于发现了问题所在!显然,根据这篇文章:https ://vimways.org/2018/from-vimrc-to-vim/如果您将特定于文件类型的代码放入文件类型插件中,则无需为其创建自动命令。

由于 vim 设置打开文件类型然后运行与文件相关的 ftplugin 脚本的一般行为,样板文件都变得多余。

这意味着在我的 ftplugin/javascript.vim 文件中我只需要映射:

nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>
于 2019-04-20T12:26:57.523 回答