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使用异常