2010-01-28 93 views
68

我注意到,偶爾當我使用O(大寫'o')來創建一個新行並進入插入模式時,在發生任何事情之前會有一個短暫的延遲。延遲'O'開始新的一行?

這是常見的嗎?有什麼方法可以改變它嗎?

:map O:imap O都顯示「沒有找到映射」,所以我不認爲這是一個奇怪的映射。

+0

同意superuser.com:也許這是由於語法高亮重新計算格式? – monojohnny 2010-01-28 22:39:13

+4

請不要使用「belongs-on-superuser」之類的標籤標籤並非旨在用來表達您的意見 - 請參閱http://meta.stackexchange.com/questions/36819/too-many-questions-are -being封閉-AS-不是編程相關/ 36821#36821。如果您認爲它屬於SU,請投票將其移至此處。 – 2010-01-28 22:45:50

+0

我已更正。我不會再使用這些標籤。我仍然認爲這個很好的問題是屬於SU的那種問題,並希望在那裏找到它。 – jjclarkson 2010-02-01 21:11:31

回答

80

這是因爲'esckeys'選項啓用(的nocompatible的結果,因爲我剛剛發現)交換文件。當您按^[O時,如果您使用箭頭/功能鍵或者如果您只是按順序表示這兩個鍵,則會有小的延遲。

一種解決方案是在插入模式下禁用該選項並放棄箭頭鍵。
另一種方法是將'timeoutlen'設置爲小於1000,也許是100(但要小心慢速連接)。
另一種方法是使用^C而不是^[離開插入模式。

+0

很酷,謝謝! 此外,對於任何可能正在閱讀此內容的人:在關閉它之前,請查看「esckeys」的幫助頁面 - 這就是您可以使用的內容,例如插入模式下的箭頭鍵。設置''timeout''對我來說效果很好。 – 2010-01-29 15:16:26

+3

另外'ttimeoutlen'可以爲鍵盤代碼設置超時時間。見vim的':help ttimeoutlen' – k107 2012-07-11 23:44:06

+1

即使在':set noesckeys'或':set timeout timeoutlen = 1000 ttimeoutlen = 100'之後,我仍然有延遲...任何想法? (Cygwin,從源代碼編譯的VIM) – 2013-03-05 06:28:55

1

我懷疑這是當你必須將交換文件寫入磁盤。確保你在一臺能夠快速訪問磁盤的計算機上運行vim;如果你必須使用一個共享文件系統,你可以嘗試使用移動

:set directory=/path/to/local/dir 
+0

我第二個 - 在工作中我們的主目錄是NFS掛載的,我看到這種延遲很多。 – Cascabel 2010-01-28 22:46:18

+0

......當然,如果僅僅是O,而不是o,就像jleedev說的那樣,它肯定是逃脫鍵序列的東西! – Cascabel 2010-01-28 23:00:21

+1

那麼,即使這個答案直接不解決OP,我覺得它仍然相關。不能同意那些倒票的人。 – 2010-01-29 14:16:24

3

如果您在退出鍵後立即按下「O」,會發生這種情況嗎?我一直認爲這是因爲終端驅動程序正在等待一下,看看你是否要完成一個轉義序列。