2014-10-10 45 views
1

每当我打开vim,我按下的第一个键删除东西。它认为'd'被按下了,所以如果我输入'j',它将删除前两行,如果我按下'G'则删除所有内容。我检查了我的.vimrc和选择性注释出部份它似乎是这一行:每当我启动vim时,它认为我已经按'd'。我该如何阻止这种行为?

nnoremap <C-[> gT 

...但我看不出这会导致它...?

+2

它几乎肯定是你的'.vimrc';如果你不显示它,我们不能帮你。 – 2014-10-10 07:46:32

+0

嗯,我做了一个二进制搜索评论的东西出来,发现有问题的线,但我不知道它有什么问题:'nnoremap gT' – ThirstyMonkey 2014-10-10 08:08:56

+0

要改善或澄清您的问题,使用它下面的“编辑”链接而不是评论。我已经为你解决了这个问题。 – 2014-10-10 08:11:34

回答

7

<C-[>(或^[)与<Esc>相同,是重要的关键。特别是在终端中,发送输入键和控制屏幕是基于它(“ANSI逃逸序列”)。 (在GVIM中这不是一个问题,对此它有自己的实现。)因此,该密钥不得映射!选择一个不同的。(也未作为映射(例如<Esc>x),因为这会造成延迟而Vim等待其它键。的一部分)

由于方式使键盘输入是内部处理,Vim目前不能<C-[>区分和<Esc>。此外,一些组合键,如Ctrl键+非字母不能被映射,并且Ctrl键 +字母与Ctrl键 + +信不能区分。 (除非你的终端发送的出与众不同的的termcap代码,其中大部分没有。)这也适用于<Tab>/<C-I><CR>/<C-M>/<Esc>/<C-[>等(唯一的例外是<BS>/<C-H>)。这是一个已知的痛点,以及关于vim_dev和#vim IRC频道的各种讨论主题。

有些人(最重要的是保LeoNerd埃文斯)要解决这个问题(即使控制台Vim的支持此终端),并已飘来各种建议,CP。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

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

相关问题