Vim-退出可视模式时的延迟


8

如果选择某些文本后按ESC退出可视模式,则取消选择文本之前会有明显的延迟,并且我将返回正常模式(即使我只选择了1-2个字符)。可以避免这种延迟吗?

vim  delay 

Answers:


2

这可能是由于映射到某些其他功能引起的。例如,我使用tabbar插件,它将0-9映射到数字缓冲区。每当一个键映射到这样的附加功能时,vim在按下后会等待几秒钟,以查看您是否要按下任何其他键。

要查看是否还有其他映射,请运行:map<Esc>在第一列中查找。当不带任何参数运行时,:map将列出所有自定义映射。如果要在可视模式下仅列出映射,请运行:vmap

如果确实有其他映射,除了删除映射之外,我不知道其他方法可以删除暂停。暂停对于vim明确知道您打算采取的措施是必要的。


1
在类似VT100的终端(包括Xterm / Rxvt / PuTTY / GNOME终端)中,Esc它也是所有特殊键(包括箭头键)的前缀。
user1686

@grawity:是的,但是Vim对那些转义序列使用的超时值与对映射使用的超时值不同,因此对这些转义序列的处理通常不会引起此处报告的问题。请参阅:help 'timeout'
garyjohn

谢谢,就是这样。现在,我只需要查找那些干扰我使用的映射。

0

我没有全局或可视模式绑定到<ESC>的映射(调用:verbose vmap <ESC>不会产生任何结果),但是退出可视模式时仍然存在明显的延迟。即使在没有vimrc的全新安装中,也会存在延迟。使用<Cc>会立即退出可视模式。

由于我不喜欢按<Cc>键退出任何模式,因此我目前在可视模式下将<ESC>映射到<Cc>。这会立即使用<ESC>退出可视模式。

:vmap <ESC> <C-c>

或将以下行放入vimrc

vnoremap <ESC> <C-c>

如果您确实已将全局或可视模式映射绑定到<ESC>,则此方法将无效。


-2

您仍然可以使用CTRL+ C退出可视模式,这应该避免延迟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.