Vim autocmd 没有正确映射一个映射
Vim autocmd does not map properly a mapping
我想创建一个插件,将特定的 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 吗?
终于找到问题所在了!
显然,根据这篇文章:https://vimways.org/2018/from-vimrc-to-vim/ 如果您将特定于文件类型的代码放入文件类型插件中,则无需为其创建自动命令。
通过 vim 在打开时设置文件类型然后 运行 与文件相关的 ftplugin 脚本的一般行为使样板全部变得多余。
这意味着在我的 ftplugin/javascript.vim 文件中我只需要映射:
nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>
我想创建一个插件,将特定的 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 吗?
终于找到问题所在了! 显然,根据这篇文章:https://vimways.org/2018/from-vimrc-to-vim/ 如果您将特定于文件类型的代码放入文件类型插件中,则无需为其创建自动命令。
通过 vim 在打开时设置文件类型然后 运行 与文件相关的 ftplugin 脚本的一般行为使样板全部变得多余。
这意味着在我的 ftplugin/javascript.vim 文件中我只需要映射:
nnoremap <buffer> <localleader>j :call pluginName#pluginName#funName()<cr>