2013-02-22 95 views
1

正如问题所述,我的vim从删除模式开始。如果我打开一个文件并点击j开始导航,则会删除第一行。vim为什么在删除模式下启动?

我已经分离出的问题降到这一行我.vimrc

nnoremap <silent> <esc> :noh<return><esc> 

我不明白为什么这甚至会引发删除模式。最重要的是,我相信我添加了<silent>来指示vim在不执行它的情况下进行此绑定,但似乎并非如此。

为什么会出现这种情况?

(附带说明,这个映射告诉VIM清除搜索亮点时,我打ESC)

回答

3

如果在终端运行此命令:

$ vim file.txt -c 'nnoremap <silent> <esc> :noh' 

它会在底部显示此:

:noh[>1;3201;0c 

vim进入change-mode莫名其妙。


您可以更改<esc><F5>(或其他键)。 如果您使用gvim,则没有问题。 这是由于终端特殊密钥溢出造成的。

+1

当使用'+ termresponse'功能构建时,* Vim *向终端发送一个特殊的控制序列(参见':set t_RV?')。当你的终端仿真器看到这个序列时,它以ESC']> 1; 3201; 0c'的顺序响应。 ESC被映射到':noh',并在命令行中获得序列的其余部分。通过OP的映射,其余的序列被当作正常的命令,因此最后一个'c'开始一个改变命令。所以,这个ESC映射干扰了* xterm *(或其他)给* Vim *的查询响应。 – 2013-02-22 10:50:07

+0

@ChrisJohnsen感谢您提供最终的链接。这三个数字的解释在':h v:termresponse'中给出。这太糟糕了,即使阅读帮助文件后,我也不明白什么是术语响应。 – 2013-02-22 22:48:49

+0

我无法对此答案表示感谢。它使我找到了一个彻底解决这个问题的解决方案。对于其他人,我已经在另一个问题上发布了[答案](http://stackoverflow.com/a/16027716/640517) – 2013-04-17 00:16:57

相关问题