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