24

当我在普通模式下使用 vim 时,我经常不小心按 TAB 键,默认情况下 TAB 键的作用与 Ctrl-I 相同。我想让 key TAB 什么都不做,所以我把这一行放在 vimrc 文件中:

nmap <TAB> :echo<CR> 

因此,键 TAB 不会做任何事情,但这使得键 Ctrl-I 也不会做任何事情。那么,如何让 TAB 什么都不做,并且 Ctrl-I 在 vi​​m 中(在正常模式下)像以前一样正常工作?

4

3 回答 3

31

由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的,即使在 GVIM 中也是如此。某些组合键,如Ctrl+non-alphabetic无法映射,Ctrl+letterCtrl++Shift无法letter区分。(除非您的终端为它发送一个独特的termcap代码,而大多数人不会。)这也适用于<Tab>/ <C-I><CR>/<C-M>等。这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。

一些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim),并提出了各种建议

但是截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中拥有它。

于 2013-02-01T08:09:49.697 回答
10

我建议<TAB>做一些有用的事情:

nmap <TAB> <C-W>
nmap <TAB><TAB> <C-W><C-W>

这种方式可以tab用于窗口操作。当然,有了这个你就不能有这种ctrl-i行为。,i我为此映射:

nnoremap ,i <C-I>
于 2013-02-03T05:53:18.667 回答
1

我发现重新映射时ctrl-tab默认工作。ctrl-itab

在 macvim 中工作。我没有检查其他vim。

于 2017-04-20T12:59:46.797 回答