当我在普通模式下使用 vim 时,我经常不小心按 TAB 键,默认情况下 TAB 键的作用与 Ctrl-I 相同。我想让 key TAB 什么都不做,所以我把这一行放在 vimrc 文件中:
nmap <TAB> :echo<CR>
因此,键 TAB 不会做任何事情,但这使得键 Ctrl-I 也不会做任何事情。那么,如何让 TAB 什么都不做,并且 Ctrl-I 在 vim 中(在正常模式下)像以前一样正常工作?
当我在普通模式下使用 vim 时,我经常不小心按 TAB 键,默认情况下 TAB 键的作用与 Ctrl-I 相同。我想让 key TAB 什么都不做,所以我把这一行放在 vimrc 文件中:
nmap <TAB> :echo<CR>
因此,键 TAB 不会做任何事情,但这使得键 Ctrl-I 也不会做任何事情。那么,如何让 TAB 什么都不做,并且 Ctrl-I 在 vim 中(在正常模式下)像以前一样正常工作?
由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的,即使在 GVIM 中也是如此。某些组合键,如Ctrl+non-alphabetic无法映射,Ctrl+letter与Ctrl++Shift无法letter区分。(除非您的终端为它发送一个独特的termcap代码,而大多数人不会。)这也适用于<Tab>
/ <C-I>
,<CR>
/<C-M>
等。这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。
一些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim),并提出了各种建议。
但是截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中拥有它。
我建议<TAB>
做一些有用的事情:
nmap <TAB> <C-W>
nmap <TAB><TAB> <C-W><C-W>
这种方式可以tab
用于窗口操作。当然,有了这个你就不能有这种ctrl-i
行为。,i
我为此映射:
nnoremap ,i <C-I>
我发现重新映射时ctrl-tab
默认工作。ctrl-i
tab
在 macvim 中工作。我没有检查其他vim。