老闆說,Vim宏都不會用,你的工作效率太低啦~

工作中,對於文本文件的編輯我們經常有這樣的需求:

  • 多次重複輸入一段相同文本;
  • 生成一段序列化的文本;
  • 每行文本插入一句相同的文本。

除此之外,還有很多需要重複操作的動作。對於這些需求,如果我們人工去操作的話,肯定是非常枯燥乏味,並且要浪費很多時間精力。

這時, Vim 宏就派上用場了,它可以通過一些簡單的步驟快速完成這些重複性的操作,省時省力!下面詳細講解。

宏的錄製和運行

宏的錄製

  1. 在 Vim 編輯器中創建新文件或打開現有文件;
  2. 按 q 並跟上 宏名 開始錄製。假設我們想要將宏名命名為 b ,則按 Esc 和 qb 開始錄製;
  3. 文本編輯ing……
  4. 按 q 停止錄製。至此,宏的錄製已完成。

宏的運行

按 @ 接 宏名 即可運行宏一次,按 次數 接 @宏名 重複運行宏多次。

下面給出實例來詳細介紹。

示例-1:使用宏多次生成相同的文本

例如我們要生成 100 行一樣的文字,一種比較笨的辦法就是複製然後粘貼所需要的遍數。這種效率非常低,而且非常容易出錯。有了宏這個工具,一切變得超級簡單!

首先,我們在 Vim 編輯器中創建一個名為 file1.txt 的新文件。

file

然後,我們按 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 下宏這個神器,我們可以通過創建和使用不同類型的宏來完成這些重複性工作,從而節省時間和精力,實現高效編輯。

看完的都是真愛,點個贊再走唄?您的「三連」就是良許持續創作的最大動力!

  1. 關注原創公眾號「良許Linux」,第一時間獲取最新Linux乾貨!
  2. 公眾號後台回復【資料】【面試】【簡歷】獲取精選一線大廠面試、自我提升、簡歷等資料。
  3. 關注我的部落格:lxlinux.net

Tags: