Vim中巨集命令的使用例項詳解

2022-09-26 15:06:21 字數 1642 閱讀 1714

前言

vim 的設計哲學中有這樣一句話:」if you write a thing once, it is okay. however if you're writing it twice or more times, then you should find a better way to do it」.

vim 的 macro 就是用來解決重複的問題。在 vim 暫存器的文章裡面已經對 macro 有所涉及, macro 的操作都是以文字的方式存放在暫存器中。

巨集是一組命令的集合,應用極其廣泛,包括ms office中的word編輯器,excel編輯器和各種文字編輯器,linux系統中最強大的文字編輯器之一的vim同樣支援巨集操作,本節內容簡要說明一下巨集在vim中使用,首先看下面幾個巨集的命令

以上命令均是在vim的一般模式(normal)下使用的,其中*代表乙個數字和單詞字元,正規表示式規則是:[0-9a-za-z]

比如在一般模式下輸入qq會看到vim下方的狀態列出現recording,此時表示已經開始錄製巨集到暫存器q中,也可以把q作為巨集的id,此時進行的命令都程式設計客棧會被錄製到巨集中,再次在一般模式下按q即停止巨集的錄製,程式設計客棧後面即可通過@q來呼叫該巨集了

簡單使用

錄製 macro,使用 q + [a-z] 26個字母中的乙個

q[a-z]

之後的命令都會被記錄,然後結束時再按一下 q 。

執行 macro 的時候,在暫存器前加 @ ,比如記錄在暫存器 a 中

10@a

執行 10 遍a暫存器中記錄的命令。

@@再執行一遍上一次的命令。

編輯 macro

假設已經有乙個 macro 儲存在了lrzjyylq a 中,可以使用

檢視 macro

macro 內容儲存在 a 中,直接使用 :reg a 來檢視內容即可。

舉例經典的注釋和尾部新增

注釋,或者在每一行的末尾新增特定字元,比如在每行末加上分號」;」 ,對於這個操作 vim 中有太多的方式可以完成,比如說替換 :%s/$/;/g ,比如說 . 命令,再比如這裡要使用的 macro :

int a = 1

int b = 2

int c = a+b

print a

print b

print c

如果是用 . 來實現的話,首先在第一行執行a;,然後重複5次執行j.,對於這種簡單檔案來說很容易使用,但是如果這個檔案有 1000 行,那麼顯然 . 命令lrzjyylq是不可行的。使用 macro , 可以先錄製一遍,然後在 1000 行上執行便可。

比如可以在normal模式下使用 qaa;jq

此時 a 暫存器中就儲存了當前行的操作,在當前行新增 ; 並將游標移動到下一行。

錄製結束後就可以使用 @a

1000@a

執行1000遍 macro ,就能將下面1000行尾部新增 ;

遞增數字

可以使用 macro 實現插入 1 到 100 個數字,每一行自增一:

123...100

首先在第一行插入1,然後游標定位了「1」處,進入normal模式

輸入一下命令

qayypaq

最後執行

98@a

總結本文標題: vim中巨集命令的使用例項詳解

本文位址: /os/linux/209940.html

關於Linux中vim編輯器命令使用詳解

vi 檔案 編輯檔案命令模式 編輯模式 i,a,o 編輯模式 命令模式 esc 命令模式 底部命令模式 編輯模式鍵說明 i在游標的位置插入 a在游標的下乙個位置插入 o在游標的下一行插入 a在游標所在行尾插入 s在所在行的內容刪除 然後輸入 s先將游標所在的字元刪除在輸入 i在行首輸入鍵說明 h左j...

Find命令使用詳解及例項分析

find主要支援從以下幾方面來查詢檔案。命令格式 find directory options expression 常用選項選項 含義引數 name 指定檔名查詢 引數可以為純字串和包括萬用字元的字串 iname 同上,但忽略大小寫 同上 type 指定要搜尋的檔案型別,引數可以為f,l,d,c,...

vim高頻使用的命令!(持續更新中 )

vim包含三種模式 命令模式 輸入模式和底線命令模式 命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。指令說明 i切換到輸入模式 s刪除當前游標所在處的字元 切換到底線命令模式 指令說明 v 方向鍵 表示選中 指令說明 yy複製游標所在的整行 3yy表示複製3行 y 複製至行首,...