作業中,對于文本檔案的編輯我們經常有這樣的需求:
- 多次重復輸入一段相同文本;
- 生成一段序列化的文本;
- 每行文本插入一句相同的文本,
除此之外,還有很多需要重復操作的動作,對于這些需求,如果我們人工去操作的話,肯定是非常枯燥乏味,并且要浪費很多時間精力,
這時, Vim 宏就派上用場了,它可以通過一些簡單的步驟快速完成這些重復性的操作,省時省力!下面詳細講解,
宏的錄制和運行
宏的錄制
- 在 Vim 編輯器中創建新檔案或打開現有檔案;
- 按
q并跟上宏名開始錄制,假設我們想要將宏名命名為b,則按Esc和qb開始錄制; - 文本編輯ing……
- 按
q停止錄制,至此,宏的錄制已完成,
宏的運行
按 @ 接 宏名 即可運行宏一次,按 次數 接 @宏名 重復運行宏多次,
下面給出實體來詳細介紹,
示例-1:使用宏多次生成相同的文本
例如我們要生成 100 行一樣的文字,一種比較笨的辦法就是復制然后粘貼所需要的遍數,這種效率非常低,而且非常容易出錯,有了宏這個工具,一切變得超級簡單!
首先,我們在 Vim 編輯器中創建一個名為 file1.txt 的新檔案,

然后,我們按 q 之后再按 z 開始錄制宏,這里的 z 就是 宏名 ,后面會用到,如果錄制正確,底部就會出現 recording @z 字樣,

再之后,按 i 然后輸入要需要重復的文本,比如這里輸入文本 Learning Vim Macros ,

最后按 q 停止錄制,這時 recording @z 就會從底部消失,這樣,一個名為 z 的 宏就錄制完成了,后續我們就可以利用這個宏來重復完成文字錄入作業,

如果你想運行一次剛剛創建的宏,那么將游標移動到檔案的所需位置,然后并按 @z 就可以了,這時文字就會被復制一遍,

如果你想要復制 N 多次這行文字,則可以多次運行剛剛那個宏,此時只需在宏前面加 次數 即可,例如 4@z 就可以運行剛才的宏 4 次,相應文字就會被復制 4 遍,

示例-2:使用宏生成序列號
在示例-1里我們是機械重復復制一堆一樣的文字,那如果想要生成帶序列的文本該如何處理?使用宏也可以輕松完成!
假設我們要生成 101-110 的一系列數字,我們一起來完成這個需求,
首先,在 Vim 編輯器中創建一個名為 file2.txt 的新檔案,接著按 i 鍵入 101.,

按 ESC 退出鍵入,然后再按 qy 以宏名稱 y 開始錄制后續的操作,我們將游標移到第一行的開頭并按 yy 復制文本,然后按 p 將文本粘貼到下一行,

接著,按 Ctrl + a 將第二行的值從 101 增加到 102 ,最后,像之前一樣按 q 停止錄制,我們的宏就制作完成了,
接下來,就是見證奇跡的時刻!
我們鍵入 8@y ,剛剛所錄制的宏就會運行 8 次,生成從 103 到 110 的連續數字,一鍵操作,簡單高效!
這對于一些帶有序列性的文本非常有用,你就無需再重復去做 復制-->改數字 這樣重復枯燥的作業,同時效率也會大大提升!

示例-3:在檔案的每一行中添加相同的文本
我們在操作資料庫的時候,很多情況下一些陳述句非常相似,比如 insert into items values(100, 20077100050, alvin) 這樣的文本,會重復很多次,假如我們現在已經有了要插入的資料,如何快速生成多條 SQL 陳述句?
在這個例子里,我們假設資料檔案 file3.txt 有 4 條資料,如下圖示,
首先,我們在 Vim 編輯器中打開資料檔案 file3.txt ,然后按 ESC ,再然后按 qd 以宏名 d 開始錄制,

將游標轉到檔案的開頭,按 i 鍵插入文本,然后再輸入 insert into items values( ,再接著按 ESC, w, yw 5 次,
在這里,w 用于轉到下一個單詞,yw 用于復制當前單詞,之所以這里要 5 次是因為這里每行有五部分,分別是 11001 , HDD , Samsung (注意逗號也算一部分),
之后,按 ESC 和 a 鍵將游標移動到行尾,再輸入 ); ,

最后,按 j 然后按 q ,這里,j 用于移動到下一行,q 用于停止錄制,這樣我們所需要的宏就制作完成了,
現在,我們想要讓下面剩下的 3 行的文本都處理成第一行那樣的格式,直接按 3@d 運行宏 3 次就可以實作,這樣一來,在資料庫中進行插入就會方便很多,而且我們無需手動一個個去更改,簡單高效!

結論
我們在寫代碼程序中,有很多場合文本、代碼高度相似,如果我們手動去一個個修改的話,那效率將會非常低,有了 Vim 下宏這個神器,我們可以通過創建和使用不同型別的宏來完成這些重復性作業,從而節省時間和精力,實作高效編輯,
看完的都是真愛,點個贊再走唄?您的「三連」就是良許持續創作的最大動力!
- 關注原創公眾號「良許Linux」,第一時間獲取最新Linux干貨!
- 公眾號后臺回復【資料】【面試】【簡歷】獲取精選一線大廠面試、自我提升、簡歷等資料,
- 關注我的博客:lxlinux.net
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/116696.html
標籤:Linux
