使用NERDComment插件和重新映射的Leader自定义键?

9

我正在尝试在vim中设置NERDComment插件,但是按键方面遇到了一些问题。我想将基本的切换功能(如果未注释则注释一行,如果已注释则取消注释)设置为 c 。问题在于,我已将Leader重新映射为,,这也是NERD要求所有热键使用的相同键。有人知道如何设置吗?

4个回答

14

只需在您的映射中调用NERDComment函数。例如,我的映射用于注释当前行:

inoremap ,c <C-o>:call NERDComment(0,"toggle")<C-m>
这是一个关于vim重映射如何工作的解释:
在inoremap中,i表示该重映射仅适用于插入模式。 noremap表示该重映射不能被后续的.vimrc文件或插件意外覆盖。 ,c是触发键映射的组合键。 <C-o>将您暂时带出插入模式执行一次命令,以便重映射的下一部分可以调用NERDComment函数。 :call NERDComment(0,"toggle") 是调用NERDComment函数。
然后,<C-m>是表示回车,即执行该命令。

1
你能对那行代码再做进一步的解释吗? - Someth Victory
我在我的.vimrc文件中也需要这行代码才能使它工作:let g:NERDCreateDefaultMappings = 0 - lsimmons
感谢您对Vim语法的详细解释,这非常有帮助。 - Aundre
在新版本中,NERDComment(0, "toggle")已被弃用,应替换为:call nerdcommenter#Comment(0,"toggle") - Flov

11
如果你想在普通模式和可视模式下使用评论快捷方式,但不希望在插入模式下使用,因为这可能会在尝试键入逗号时导致一些奇怪的情况,那么可以使用以下重新映射:
nnoremap ,c :call NERDComment(0,"toggle")<CR>
vnoremap ,c :call NERDComment(0,"toggle")<CR>

4

重新映射键的记录方法在这里: 重新映射文档

参考资料

map <leader>d <Plug>NERDCommenterToggle

"silently rejects remap will not work
nnoremap <leader>d <Plug>NERDCommenterToggle 

我曾经尝试使用“nnoremap”进行重新映射,结果导致无响应的映射,这是一个陷阱。你必须使用“map”,“nmap”等来正确地重新映射函数。

2
:map <C-z> <plug>NERDCommenterToggle

将“切换注释”映射到Ctrl+z


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接