Vim autocmd无法正确映射映射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim 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,我看不出我使用它的方式和那里解释的有什么区别。 “学习艰难的方式”一书也没有帮助。

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

答案

我终于找到了问题所在!显然,根据这篇文章:https://vimways.org/2018/from-vimrc-to-vim/如果你将一个特定于文件类型的代码放入一个文件类型插件中,就不需要为它创建一个autocmd。

通过vim在打开时设置文件类型然后运行与文件相关的ftplugin脚本的一般行为,样板都变得冗余。

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

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

以上是关于Vim autocmd无法正确映射映射的主要内容,如果未能解决你的问题,请参考以下文章

蝴蝶效应--由'sudo -s ...'引发的vim autocmd使用异常

片段着色器中的球面映射

Vim在所有文件类型上运行autocmd除外

无法获得在 Angular 2 代码中映射的正确 http 响应

VIM 的 modeline 和 autocmd

使用ggplotly映射无法正确显示(R)