2013-04-26 69 views
0

我的問題是當我創建一個vim宏時,我在搜索和替換歷史中使用了一些搜索和替換。所以我用箭頭鍵在歷史上找到它。但麻煩是宏只記錄我的箭頭鍵活動,而不是我找到的命令。因此,當我再次執行宏時,搜索歷史記錄會發生變化,結果會混亂。有什麼辦法可以解決這個問題嗎?使用搜索歷史創建vim宏時遇到的麻煩

+0

你能舉一些例子來說明爲什麼按下上/下是必須的嗎? – Kent 2013-04-26 16:48:03

回答

1

是的,你可以通過理解宏記錄擊鍵而不是命令的結果來解決這個問題,並相應地採取行動。

例如,當您使用<C-r>///的上次搜索時,不會記錄上次搜索寄存器的實際內容。下次你玩這個宏時,最後的搜索模式可能會有所不同,如果你期望的話,你的整個宏將被破壞。如果您希望自己的宏可靠,則必須實際輸入搜索模式或將搜索作爲錄製的一部分。

爲了更好地理解錄製在Vim中的工作方式,可以粘貼剛剛錄製的宏(宏被保存在寄存器中,就像你所抽出的東西一樣)並研究它的內容。

QQ (做的東西) q 「QP

+0

感謝您的幫助 – 2013-09-22 16:39:28

1

記住這個事實,當你錄製宏不使用這樣的歷史召回的命令。這可能是不是很方便,但你可能會緩衝通過例如參考最後的搜索模式(例如:s//...)或者調用部分命令(例如:w foo<Up>),可以使用宏的這種行爲作爲特徵。 ,可以記錄適用於各種情況的宏。

最後,您可以在意識到它已損壞後「搶救」一個宏;因爲其內容存儲在寄存器中,所以你可以重新編輯,例如通過:

:let @a = <C-r><C-r>=string(@a)<CR>