首页 > 解决方案 > 无法让这些控制键在 vim 中工作

问题描述

我正在查看 Ben Frain 的这个 vimrc 文件的一部分

https://gist.github.com/benfrain/f09dd39e66fe2da9cf0a

" Allow line movement on wraps with CTRL+usual {{{
vmap <C-j> gj
vmap <C-k> gk
vmap <C-h> g$
vmap <C-6> g^
vmap <C-0> g^
nmap <C-j> gj
nmap <C-k> gk
nmap <C-4> g$
nmap <C-6> g^
nmap <C-0> g^
" }}}

我确实注意到该列表中的一个问题,例如 ctrl-k 已经执行 gk。所以当它起作用时,它不是来自他的映射。

我正在使用 macvim

即使我尝试一些简单的事情

~/.vim$ cat vimrc
nmap <C-0> aaaa
~/.vim$ 

或者

~/.vim$ cat vimrc
nmap <C-0> aaaa
vmap <C-0> aaaa
~/.vim$ 

它不起作用,它没有将 ctrl-0 映射到 'aaaa' 的输入

我已经尝试过/usr/local/bin/vim(这是通过安装的macvim brew cask install macvim)并且我已经尝试过/usr/bin/vim(这是预装的vim)。所以我使用哪个 vim 没有区别。

我想知道可以映射哪些 ctrl 键(如果有)。

我听说映射 ctrl 键是个坏主意,可能因为很多都在使用中,并且最好使用领导键,其默认值为反斜杠。所以 。map <leader>0 aaaa. 这行得通,但我仍然对 ctrl 的映射感到好奇。

标签: vim

解决方案


Vim 不会“看到”所有可用的 Ctrl 组合。Vim 是为 Unix 终端开发的,这些终端并不为应用程序提供所有的 Ctrl 键。

要测试 ctrl 组合是否可映射,请执行以下操作:

打开 Vim 并进入插入模式。然后点击Ctrl-v您要映射的 Ctrl 组合。如果显示某些内容,则 Ctrl 组合是可映射的。

例子:

  • 如果你击中Ctrl-v后跟Ctrl-k字符^k显示(通常为浅蓝色)。Ctrl-k可映射也是如此。
  • 如果你点击Ctrl-v后面Ctrl-0什么都没有显示。所以Ctrl-0不可映射的。
  • 如果你点击Ctrl-v后跟Ctrl-3字符^[显示。所以……Ctrl-3等于ESC

推荐阅读