接下來, 我們要將文本的偶數行修改為:
This?is?another?test
。
由于所有的偶數行都要進行同樣的操作,
因此我們把這個操作錄制下來,
然后重復播放若干遍, 就能很快地完成這項工作了。
首先, 按幾下 ESC 確認處在 Normal 模式下, 再按下
gg
跳到第一行, 準備開始操作。
我們首先按下 q
鍵,
然后再按一個其它字母,
將這個宏錄制到該字母對應的寄存器下。
例如我們這里使用 m
寄存器, 則按
qm
。 此時 VIM 狀態欄出現“recording”字樣,
表明已經進入了錄制狀態。
然后, 我們把第二行的 a
修改為
another
。 首先按 j
進入第二行,
然后按 $
跳到行末, 再按兩下 b
往前跳兩個單詞, 此時光標停在字母 a
上。
然后我們按下 caw
鍵刪除 a
并進入插入狀態, 然后輸入 another?
, 按
ESC 回到 Normal 狀態, 按 j 進入下一行,
整個操作步驟就完成了。 最后, 我們再按一下
q
, 結束該宏的錄制。
接下來我們播放這個宏, 完成整個操作步驟。
在鍵盤上輸入 1000@m
, 表示將 m
寄存器里的宏播放 1000 次, 馬上可以看到,
文章中所有偶數行的 a
都變成了
another
。
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
*This is another test
*This is a test
解說: 雖然我們指定播放 1000 次, 但事實上,
執行到第 6 次的時候, 光標挪到了屏幕最下方,
于是執行過程就自動停止了。 因此,
在批量操作的時候, 我們可以指定足夠大的數字,
而不用擔心出現問題。
另外, 修改 a
的時候,
我們跳到行末后再使用 b
命令以單詞為單位跳轉, 而沒使用 h
一個字母一個字母往回挪, 我們使用 caw
修改整個單詞, 而不使用 s
命令刪除單個字母并進入 Insert 模式。
這些細節可以保證錄制得到的宏更具有一般性。
轉自http://edyfox.codecarver.org/html/vim_edit_tips.html
如何保存宏?