vim 錄制宏,自動循環執行組合操作


前言

在 vim 中錄制宏的意思就是把一段操作錄制下來,然后可以重復執行。打個比方,我有一個文本,一共 50000 行,我要在每一行后面加一個英文句號。這個操作如果手動做的話效率非常低。這時候我可以這樣,在每一行后面加一個英文句號,然后讓 vim 自動重復執行這個操作,這是非常有規律的。

要在一行后面加英文句號的操作有兩種主要方法

第一種,在 normal 模式下,執行:

$a.

操作演示:

演示1

第二種,在 normal 模式下,執行:

A.

操作演示:

演示2

宏的詳細操作

我們在使用 vim 的時候,有時候一不小心在 normal 模式下按到 q ,然后再按一個鍵(比如 t)的時候左下角會出現一個 recording @t,這其實就開啟了宏錄制,你接下來的 vim 內操作全部都會被記錄,直到你再次按下 q 的時候,宏就錄制完成了,我們暫且稱之為:宏存儲在 t 寄存器中,你想使用那一段宏的時候,只需要按下 @t 就可以了,如果你要循環 100 次數,就執行 100@t,如果想使用其他的鍵(比如 abcd)也是可以的。

接下來是操作演示,我這里已經寫了一個 50000 行的文本文件,我現在要使用宏在每一行的后面加上一個英文句號:

宏錄制完整操作

操作分解:

第一步

vim test

用 vim 打開一個名為 test 的文件,它里面已經有 50000 行內容了

第二步

我在文件的頂部加了一個空行,這樣子做是因為我想要循環執行在每一行后面加句號這個動作,那我得一行行銜接下去,所以我把光標一開始定位在那個空行里面,這樣我的第一個動作就是要到下一行,這樣我就可以循環往下執行了

第三步

qt

打開宏錄制,我用的還是 t ,打開錄制之后,左下角出現了 recording @t 的字樣,說明已經開始錄制了。然后我就先到下一行,然后在末尾加了一個句號,最后再次按下 q 鍵,錄制完畢,這樣我的宏就做好了,t 寄存器里面保存的操作就是:

下一行 -> 光標定位到行尾 -> 進入 insert 模式 -> 輸入句號 -> ESC

翻譯成 vim 的操作就是:

j$a.

jA.

第四步

現在就可以調用了,我調用了三次

10@t

100@t

1000@t

我先循環調用 10 次宏,來試一下錄制的對不對,發現錄制正確之后,再調用了 100 次,也是完全正確的,最后我調用了 1000 次,執行有點慢,cpu 被吃了很多,但還是正確執行了。其實我們可以在宏的錄制中給 10 行加句號,這樣調用 1000 次會快一點,我這里只是演示而已,就不去折騰了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM