2012-02-22 178 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