2013-02-01 26 views
15

当我在正常模式下使用vim时,我经常意外按下TAB键,TAB键默认与Ctrl-I做同样的事情。我要让TAB键做什么,所以我把这个线在vimrc文件:如何在VIM中取消映射TAB并且不使Ctrl-I无效

nmap <TAB> :echo<CR> 

因此,TAB键会做什么,但是这也取得了关键的Ctrl键,我什么都不做。 那么,如何让TAB什么也不做,Ctrl-I和vim(正常模式)一样工作得很好?

回答

19

由于键盘输入在内部处理的方式,现在这种情况通常不可能,即使在GVIM中也是如此。一些组合键,像按Ctrl +字母不能映射,并按Ctrl +按Ctrl ++无法区分。 (除非你的终端发送的出与众不同的的termcap代码,其中大部分没有。)这也适用于<Tab>/<C-I><CR>/<C-M>等,这是一个已知的痛点,并在vim_dev各种讨论的主题, #vim IRC频道。

有些人(主要是Paul LeoNerd Evans)想要解决这个问题(甚至在支持这个终端的控制台Vim中),并且已经漂浮了various proposals

但截至今日,尚未有补丁或志愿者出现,尽管许多人表示希望在未来的Vim 8主要版本中拥有此功能。

+0

非常感谢。我也发现在这个页面中这是不可能的[如何独立地映射](http://vim.1045645.n5.nabble.com/how-to-map-lt-tab-gt-and-lt-ci- GT-独立地-td1185417.html)。因此,我应该让自己不要无意中按下TAB键。 – tisyang

+0

感谢您的回答。我真的希望这个问题能尽快解决 - 所有的讨论似乎最终都会被抛出,这意味着它需要重新思考一个主要的代码。这是一个当前(ish)线程:https://groups.google.com/d/topic/vim_dev/2bp9UdfZ63M/discussion –

+0

Vim 7.3的当前补丁级别表明很快会有一个新版本(7.4?)。我希望这个问题在未来的Vim 8.0中得到解决。 –

9

我会建议具有<TAB>做一些有用的东西:

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

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

nnoremap ,i <C-I> 
+0

这完美的作品,应该是最好的答案 –

0

我发现ctrl-tab工作作为默认ctrl-itab被remaped。

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