每当我打开vim,我按下的第一个键删除东西。它认为'd'被按下了,所以如果我输入'j',它将删除前两行,如果我按下'G'则删除所有内容。我检查了我的.vimrc和选择性注释出部份它似乎是这一行:每当我启动vim时,它认为我已经按'd'。我该如何阻止这种行为?
nnoremap <C-[> gT
...但我看不出这会导致它...?
每当我打开vim,我按下的第一个键删除东西。它认为'd'被按下了,所以如果我输入'j',它将删除前两行,如果我按下'G'则删除所有内容。我检查了我的.vimrc和选择性注释出部份它似乎是这一行:每当我启动vim时,它认为我已经按'd'。我该如何阻止这种行为?
nnoremap <C-[> gT
...但我看不出这会导致它...?
<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主要版本中拥有此功能。
它几乎肯定是你的'.vimrc';如果你不显示它,我们不能帮你。 – 2014-10-10 07:46:32
嗯,我做了一个二进制搜索评论的东西出来,发现有问题的线,但我不知道它有什么问题:'nnoremap gT' –
ThirstyMonkey
2014-10-10 08:08:56
要改善或澄清您的问题,使用它下面的“编辑”链接而不是评论。我已经为你解决了这个问题。 – 2014-10-10 08:11:34