工做中,對於文本文件的編輯咱們常常有這樣的需求:html
- 屢次重複輸入一段相同文本;
- 生成一段序列化的文本;
- 每行文本插入一句相同的文本。
除此以外,還有不少須要重複操做的動做。對於這些需求,若是咱們人工去操做的話,確定是很是枯燥乏味,而且要浪費不少時間精力。linux
這時, Vim 宏就派上用場了,它能夠經過一些簡單的步驟快速完成這些重複性的操做,省時省力!下面詳細講解。面試
宏的錄製和運行
宏的錄製數據庫
- 在 Vim 編輯器中建立新文件或打開現有文件;
- 按
q
並跟上宏名
開始錄製。假設咱們想要將宏名命名爲b
,則按Esc
和qb
開始錄製; - 文本編輯ing……
- 按
q
中止錄製。至此,宏的錄製已完成。
宏的運行編輯器
按 @
接 宏名
便可運行宏一次,按 次數
接 @宏名
重複運行宏屢次。工具
下面給出實例來詳細介紹。spa
示例-1:使用宏屢次生成相同的文本
例如咱們要生成 100 行同樣的文字,一種比較笨的辦法就是複製而後粘貼所須要的遍數。這種效率很是低,並且很是容易出錯。有了宏這個工具,一切變得超級簡單!.net
首先,咱們在 Vim 編輯器中建立一個名爲 file1.txt
的新文件。code
而後,咱們按 q
以後再按 z
開始錄製宏。這裏的 z
就是 宏名
,後面會用到。若是錄製正確,底部就會出現 recording @z
字樣。htm
再以後,按 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.cnblogs.com/yychuyu/p/12610730.html