MacOS中Vim如何自定义cmd+\快捷键实现代码块注释
Vim快捷键绑定问题解答
能否将Cmd+\设置为代码注释快捷键
可以,根据你用的Vim版本做对应配置即可:
- 如果你用MacVim这类GUI版本的Vim:原生支持识别Cmd修饰键,Vim内部用
<D>作为Cmd键的映射前缀,Cmd+\对应的识别符就是<D-\>,直接在~/.vimrc里写映射规则就能用。 - 如果你用系统终端、iTerm2里运行的终端版Vim:默认终端不会把Cmd修饰键的组合事件传给内部程序,需要先在终端设置里给Cmd+\绑定自定义发送序列——比如选一个平时不会用到的特殊键/转义序列,再在Vim里把收到的这个序列映射到你的注释函数就行。
配置前先把系统、终端层已经占用Cmd+\的快捷键关掉,不然按键会被上层先拦截,根本传不到Vim里。
给个最基础的配置参考,把里面的YourCommentToggleFunc换成你之前写好的、适配多语言注释规则的自定义函数名即可:
" MacVim GUI版本直接用的映射规则 nnoremap <silent> <D-\> :call YourCommentToggleFunc()<CR> vnoremap <silent> <D-\> :call YourCommentToggleFunc()<CR>
如果是iTerm2用户,先在iTerm2的按键设置里新增规则:按下Cmd+\时,选择发送转义序列,输入m\,再在vimrc里加对应映射:
" 终端Vim对应iTerm2转义序列的映射规则 nnoremap <silent> <Esc>m\ :call YourCommentToggleFunc()<CR> vnoremap <silent> <Esc>m\ :call YourCommentToggleFunc()<CR>
判断按键能不能被Vim识别很简单:打开Vim按Ctrl+V,再按下你想绑定的组合键,左下角能显示出Vim实际收到的按键序列就说明没问题,识别不到就先去调整系统/终端的按键设置。
Vim是否支持非字母符号组合作为自定义快捷键
完全支持。
Vim的快捷键映射只识别最终传入的按键序列,不管你组合的是字母、数字、标点还是功能键,只要满足两个条件就能正常绑定:
- 系统、终端层不会提前拦截你设置的组合键,能把完整的按键事件传给Vim
- 映射的按键不会和Vim运行必需的内置核心快捷键冲突
平时大家常用的<C-\>、<Leader>;、<D-/>这类符号类组合键都是非常普遍的自定义快捷键选择,没有额外的规则限制。
内容的提问来源于stack exchange,提问作者Ricky Pang
相关产品推荐
相关产品推荐

