2012-02-22 127 views
5

我在使用<Esc><C-[>退出命令行模式时遇到延迟问题。看来vim正在等待看看我是否要进入一个keymapping,并且我已经改变了我的ttimeoutlen,它并没有改变延迟,但它并不是我想要的。我不希望有任何延迟Vim命令行转义超时

我已经做了一个:地图,看看是否有任何映射,期望<Esc> ...或<C-[> ...但没有看到任何做。

+3

您应该用'查看:cmap',这显示在命令行模式的地图。 – 2012-02-22 17:23:19

回答

0

要在发布关于该问题的评论@AdeYU扩大,vim reference for maps说,有三种不同类型的映射,可以影响命令行:

  • :地图
  • :CMAP
  • :lmap

您必须检查全部三项以排除导致问题的映射。

更新:尽管文档似乎表明,如果我创建一个以escape为开头的imap,然后在命令行模式下执行escape命令会突然花费更长的时间来响应。我想你也必须清除imaps。

+0

正在运行:地图显示所有映射,其模式位于最左侧的列中。 – 2012-02-23 05:36:28

+0

@KevinColyar这也是我期望的行为,但是当我在vim 7.2和7.3中运行:map时,我没有看到我创建的cmapping或lmapping。当你试用它时,vim的行为会有所不同吗? – 2012-02-23 15:12:42

+0

啊,你说得对。 你知道一个imap会在命令模式下导致超时问题吗? 我发现这个映射从delimitMate:' OC ' – 2012-02-23 16:59:04

3

除了设置ttimeoutlen之外,你还设置了ttimeout吗?这是打开功能所必需的。我在我的.vimrc如下:

set ttimeout 
set ttimeoutlen=100 

现在我得到(无GUI运行,即使)ESC后没有延迟,即使我有涉及ESC地图。例如:

if !has("gui_running") 
    set <A-v>=<1b>v 
endif 

inoremap <A-v> <C-o>"+p 

(注意< 1B>以上使用 “CTRL-V ESC” 写)

+0

我有这个设置,但它似乎对命令行模式没有影响。 – Peeja 2014-02-28 19:57:16