1. 程式人生 > >老闆說,Vim巨集都不會用,你的工作效率太低啦~

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

工作中,對於文字檔案的編輯我們經常有這樣的需求: - 多次重複輸入一段相同文字; - 生成一段序列化的文字; - 每行文字插入一句相同的文字。 除此之外,還有很多需要重複操作的動作。對於這些需求,如果我們人工去操作的話,肯定是非常枯燥乏味,並且要浪費很多時間精力。 這時, Vim 巨集就派上用場了,它可以通過一些簡單的步驟快速完成這些重複性的操作,省時省力!下面詳細講解。 #### 巨集的錄製和執行 **巨集的錄製** 1. 在 Vim 編輯器中建立新檔案或開啟現有檔案; 2. 按 `q` 並跟上 `巨集名` 開始錄製。假設我們想要將巨集名命名為 `b` ,則按 `Esc` 和 `qb` 開始錄製; 3. 文字編輯ing…… 4. 按 `q` 停止錄製。至此,巨集的錄製已完成。 **巨集的執行** 按 `@` 接 `巨集名` 即可執行巨集一次,按 `次數` 接 `@巨集名` 重複執行巨集多次。 下面給出例項來詳細介紹。 #### 示例-1:使用巨集多次生成相同的文字 例如我們要生成 100 行一樣的文字,一種比較笨的辦法就是複製然後貼上所需要的遍數。這種效率非常低,而且非常容易出錯。有了巨集這個工具,一切變得超級簡單! 首先,我們在 Vim 編輯器中建立一個名為 `file1.txt` 的新檔案。 ![file](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101328038-2014297418.jpg) 然後,我們按 `q` 之後再按 `z` 開始錄製巨集。這裡的 `z` 就是 `巨集名` ,後面會用到。如果錄製正確,底部就會出現 `recording @z` 字樣。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101329280-524990094.jpg) 再之後,按 `i` 然後輸入要需要重複的文字。比如這裡輸入文字 `Learning Vim Macros` 。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101330536-500314282.jpg) 最後按 `q` 停止錄製,這時 `recording @z` 就會從底部消失。這樣,一個名為 `z` 的 巨集就錄製完成了,後續我們就可以利用這個巨集來重複完成文字錄入工作。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101330701-1117126254.jpg) 如果你想執行一次剛剛建立的巨集,那麼將游標移動到檔案的所需位置,然後並按 `@z` 就可以了,這時文字就會被複制一遍。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101330927-107793373.jpg) 如果你想要複製 N 多次這行文字,則可以多次執行剛剛那個巨集。此時只需在巨集前面加 `次數` 即可。例如 `4@z` 就可以執行剛才的巨集 4 次,相應文字就會被複制 4 遍。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101331105-432440456.jpg) #### 示例-2:使用巨集生成序列號 在示例-1裡我們是機械重複複製一堆一樣的文字,那如果想要生成帶序列的文字該如何處理?使用巨集也可以輕鬆完成! 假設我們要生成 `101-110` 的一系列數字,我們一起來完成這個需求。 首先,在 Vim 編輯器中建立一個名為 `file2.txt` 的新檔案,接著按 `i` 鍵入 `101.`。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101331314-2023174615.jpg) 按 `ESC` 退出鍵入。然後再按 `qy` 以巨集名稱 `y` 開始錄製後續的操作。我們將游標移到第一行的開頭並按 `yy` 複製文字,然後按 `p` 將文字貼上到下一行。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101331968-456396253.jpg) 接著,按 `Ctrl + a` 將第二行的值從 `101` 增加到 `102` 。最後,像之前一樣按 `q` 停止錄製,我們的巨集就製作完成了。 **接下來,就是見證奇蹟的時刻!** 我們鍵入 `8@y` ,剛剛所錄製的巨集就會執行 8 次,生成從 `103` 到 `110` 的連續數字。一鍵操作,簡單高效! 這對於一些帶有序列性的文字非常有用,你就無需再重複去做 複製-->改數字 這樣重複枯燥的工作,同時效率也會大大提升! ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332176-1085919111.jpg) #### 示例-3:在檔案的每一行中新增相同的文字 我們在操作資料庫的時候,很多情況下一些語句非常相似,比如 `insert into items values(100, 20077100050, alvin)` 這樣的文字,會重複很多次。假如我們現在已經有了要插入的資料,如何快速生成多條 SQL 語句? 在這個例子裡,我們假設資料檔案 `file3.txt` 有 4 條資料,如下圖示。 首先,我們在 Vim 編輯器中開啟資料檔案 `file3.txt` ,然後按 `ESC` ,再然後按 `qd` 以巨集名 `d` 開始錄製。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332368-1403149023.jpg) 將游標轉到檔案的開頭,按 `i` 鍵插入文字。然後再輸入 `insert into items values(` ,再接著按 `ESC`, `w`, `yw` 5 次。 在這裡,`w` 用於轉到下一個單詞,`yw` 用於複製當前單詞。之所以這裡要 5 次是因為這裡每行有五部分。分別是 `11001` `,` `HDD` `,` `Samsung` (注意逗號也算一部分)。 之後,按 `ESC` 和 `a` 鍵將游標移動到行尾,再輸入 `);` 。 ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332575-1198119713.jpg) 最後,按 `j` 然後按 `q` 。這裡,`j` 用於移動到下一行,`q` 用於停止錄製。這樣我們所需要的巨集就製作完成了。 現在,我們想要讓下面剩下的 3 行的文字都處理成第一行那樣的格式,直接按 `3@d` 執行巨集 3 次就可以實現。這樣一來,在資料庫中進行插入就會方便很多,而且我們無需手動一個個去更改,簡單高效! ![](https://img2020.cnblogs.com/other/1218435/202004/1218435-20200401101332800-1588678698.jpg) #### 結論 我們在寫程式碼過程中,有很多場合文字、程式碼高度相似,如果我們手動去一個個修改的話,那效率將會非常低。有了 Vim 下巨集這個神器,我們可以通過建立和使用不同型別的巨集來完成這些重複性工作,從而節省時間和精力,實現高效編輯。 #### 看完的都是真愛,點個贊再走唄?您的「三連」就是良許持續創作的最大動力! 1. 關注**原創**公眾號「**良許Linux**」,第一時間獲取最新Linux乾貨! 2. 公眾號後臺回覆【資料】【面試】【簡歷】獲取精選一線大廠面試、自我提升、簡歷等資料。 3. 關注我的部落格:[lxlinux.net](http://www.lxli