工作中,對於文本文件的編輯我們經常有這樣的需求: 多次重覆輸入一段相同文本; 生成一段序列化的文本; 每行文本插入一句相同的文本。 除此之外,還有很多需要重覆操作的動作。對於這些需求,如果我們人工去操作的話,肯定是非常枯燥乏味,並且要浪費很多時間精力。 這時, Vim 巨集就派上用場了,它可以通過一些 ...
工作中,對於文本文件的編輯我們經常有這樣的需求:
- 多次重覆輸入一段相同文本;
- 生成一段序列化的文本;
- 每行文本插入一句相同的文本。
除此之外,還有很多需要重覆操作的動作。對於這些需求,如果我們人工去操作的話,肯定是非常枯燥乏味,並且要浪費很多時間精力。
這時, 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