Vim 重複命令篇


建立時間: 2023年7月8日 12:57
更新時間: 2024年11月18日 09:09

說明

有時候在編輯文件時,有很多操作是重複的,比較簡單的例子是刪除5行,但這很簡單只需要打 5dd 就好,但如果是比較複雜的命令的話,例如:將每一行結尾加上「;」分號,除了一行一行加以外,還可以使用 Vim 記錄的方式來處理,本篇將分享 Vim 重複命令。

單次重複

.

重複上次改變,有計數前綴就重複 [count] 次。

例如:~dd 這些都是會改變的命令。

如果沒有數字前綴,使用上次的改變的重複次數。

不能重複命令列命令。


@:

重複上次命令列 [count] 次。


多次重複

查看幫助文件 :help :g

:[range]g[lobal]/{pattern}/[cmd]

[range] 界定的匹配模式 {pattern} 的文字行上執行 Ex 命令 [cmd] (預設值是 :p)。

範例:

:1,10g/a
在1到10行顯示有a的行內容。

:g/a/d
刪除所有行有a的行內容。

:g/pat/s//PAT/g
此命令會取代所有的 pat 為 PAT。同樣的功能也可以用: :%s/pat/PAT/g 實現。這樣省下了兩個字元!

:g/pat/s/dog/cat/g
此命令會搜尋所有符合 pat 的行,將行內所有的 dog 取代為 cat。


:[range]g[lobal]!/{pattern}/[cmd]

[range] 界定的不匹配模式 {pattern} 的文字行上執行 Ex 命令 [cmd] (預設值是 :p)。

範例:

:1,10g!/a
在1到10行顯示沒有a的行內容。


:[range]v[global]/{pattern}/[cmd]

:g!


重複組合操作

記錄

記錄是將命令記錄下來,記錄下來之後 Vim 就可以重複執行記錄的命令。


q{0-9a-zA-Z"}

在暫存器 {0-9a-zA-Z"} 裡記錄鍵入的字元(大寫名字的暫存器表示附加鍵入的內容)。

q 命令不能在執行暫存器時使用。同樣,在映射和 :normal 裡也不能。


q

記錄時,再按 q 停止記錄。


@{0-9a-z".=*+}

執行暫存器 {0-9a-z".=*+} 的內容 [count] 次。


@@

執行上次執行的 @{0-9a-z":*} [count] 次。


:[addr]@{0-9a-z".=*+}

把暫存器 {0-9a-z".=*+} 裡的內容看成一個 Ex 命令執行。

首先,把遊標放在 [addr] 行 (預設是當前行) 上,接著再執行 Ex 命令。


:[addr]@:

先把遊標放在 [addr] 行 (預設是當前行) 上,然後重複上次的命令列。


使用範例

abc
def
ghi

如上範例,我想將每一行結尾加上「;」分號,操作如下。

  1. 首先將游標位置放在 abc 那行,接著按 qa
  2. A; 在結尾插入一個分號。
  3. <Esc> 回到普通模式。
  4. j 往下移動。
  5. q 結束記錄。

此時游標會停留在 def 那行,接著按 2@a 就能重複執行上述的步驟2次。


使用 Vim 腳本

:so[urce] {file}

{file} 讀取 Ex 命令,即 : 開頭的命令,並執行。


:pa[ckadd][!] {name}

查看幫助 :help :packadd

packpath 裡搜尋可選的外掛目錄,然後執行找到的外掛文件。
目錄必須匹配: pack/*/opt/{name}
如果目錄還不在 runtimepath,加入之。
如果目錄 pack/*/opt/{name}/after 存在,在 runtimepath 的尾部加入。

我只用來載入內建外掛,有關詳細資訊,請參考 Vim 幫助文件。


大部分命令都可重複

有很多命令都可以在前面加上數字,代表重複的次數,vim 說明文件會寫 [count] 就是用來表示可指定重複次數,預設為1,我在分享 vim 內容時有時候也會寫上 [count],但有時候會忽略,原因是太常見,或者不想讓命令看起來太複雜,也有可能是真的忘記,總之在普通模式時大部分都可以使用這個方式重複執行命令。


從 ex 中執行暫存器

如果想要重複自訂的 ex 命令,可以這樣操作。

  1. 在新的一行輸入 ex 命令,不包含冒號。
  2. 將輸入的 ex 命令存到暫存器中。
  3. 輸入 :@[x] 執行 ex 命令,[x] 帶入暫存器編號。

範例

  1. 在新的一行輸入 .m0,功能是將當前行移動到第一行。
  2. 執行 "add 刪除當前行的內容存入暫存器 a。
  3. 隨便移動某一行,輸入 :@a 將當前行移動到第一行。

觀看次數: 1082
.recordingvim重複
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!