2017-08-17 53 views
0

我現在使用vim的時間已經很長一段時間了,但是我每天都會多次遇到不便,因爲太早打ESC撤消vim中的ESC鍵擊

假設我編輯以下文件:

I want to change 'house' in this line. 
'house' should stay like this. 
This 'house' should become 'home' 
The other 'house' should also change. 

我想改變的所有線househome除了第二個。 (在這個簡單的例子中,編寫:s命令並執行任務很容易,但通常任務更具體,手動替換更快,更不易出錯)。我導航到house的第一個匹配項,按cw,輸入hone ,並擊中ESC。打到ESC後,我意識到偶然我輸入了字母n而不是m

  1. 我可以瀏覽到的house下一個出現的,打.重複故障更換。在這種情況下,我必須修復所有hone s,然後用m代替n

  2. 我可以立即修復的錯誤,但我不能重複同樣的house - >home更換,因爲.將重複n - >m更換。

所有這一切都將是沒有問題的,如果我打ESC之前發現的錯誤。我的問題是,如果有辦法撤消離開插入模式,這樣.將重複這兩個操作?或者類似地,有沒有辦法告訴.重複上次操作?

(當然,這聽起來像錄製宏,但因爲我在這種情況下錯誤地結束了,我還沒有開始錄製宏)

+0

您可以估計這種情況的概率。如果你改變這個詞100次,你會犯多少次錯誤。如果它是> 15-20倍,你應該真正練習你的打字技巧。 Vim不知道後者的操作是更正還是新操作。如果你知道這是一個「錯誤」,而且你知道你會按'.'來重複修改,爲什麼不在按'esc'之前進行重複檢查? – Kent

回答

1

就我本人而言,有沒有命令歷史記錄因爲你可以重複最後兩個操作。

但是,有一個插件可以幫助您實現該目標。它被稱爲the RepeatLast.vim plugin來解決這個確切的要求。它提供了一個2\.密鑰綁定。使用該插件的成本以及該插件的實際工作方式是......它實際上允許宏記錄始終。但如果你能忍受這一點,它應該很好地處理這種情況。