撤銷和重做命令
<Undo> 或 u 撤銷 [count] 次更改。
:u[ndo] 撤銷一次更改。
:u[ndo] {N} 轉到改變號 {N} 之后。
CTRL-R 重做 [count] 次被撤銷的更改。
:red[o] 重做一個被撤銷的更改。
U 撤銷最近對特定行所作的一系列更改。
單次重復
. 重復上次改變,有計數前綴的重復 [count] 次。
如果 'cpoptions' 包括 'y' 標志,也可以用來重復一個抽出操作。不能重復命令行命令。
簡單的改變操作可以用 "." 重復。
如果沒有數字前綴,使用上次的改變的重復次數。
如果輸入一個重復次數,就用它取代上次的計數。
如果上次改變的操作使用數字編號的寄存器,則逐次遞增使用寄存器的序號。
如果重復的命令涉及可視的選擇區域,使用相同_大小_的區域。
@: 重復上次命令行 [count] 次。
多次重復
:[range]g[lobal]/{pattern}/[cmd] 在 [range] 界定的匹配模式 {pattern} 的文本行上執行 Ex 命令 (缺省是 ":p")。
:[range]g[lobal]!/{pattern}/[cmd] 在 [range] 界定的_不_匹配模式 {pattern} 的文本行上執行 Ex 命令 (缺省是 ":p")。
:[range]v[global]/{pattern}/[cmd] 等同於 :g!。
重復組合操作
q{0-9a-zA-Z"} 在寄存器 {0-9a-zA-Z"} 里記錄鍵入的字符 (大寫名字的寄存器表示附加鍵入的內容)。
'q' 命令不能在執行寄存器時使用。同樣,在映射里也不能。
q 停止記錄。(停止記錄的 'q' 不會被保存在寄存器里,除非它是映射的結果)
@{0-9a-z".=*} 執行寄存器 {0-9a-z".=*} 的內容 [count] 次。
不能用寄存器 '%' (當前文件名) 和 '#' (輪換文件名) 。
"@=" 則會提示你輸入一個表達式。這個表達式的結果會被執行。
@@ 執行上次執行的 @{0-9a-z":*} [count] 次。
:[addr]*{0-9a-z".=} 或 :[addr]@{0-9a-z".=*}
把寄存器 {0-9a-z".=*} 里的內容看成一個 Ex 命令執行。
首先,把光標放在 [addr] 行 (缺省是當前行) 上。
如果 'cpoptions' 設定了 'e' 標志位而寄存器的內容最后一行沒有 <CR>,會自動加上。
":*" 命令只有在 'cpoptions' 設置 '*' 標志位時才會識別。如果用 'nocompatible',這並非缺省。
":@=" 使用最近使用的表達式。表達式執行的結果被當作 Ex 命令執行。
這些命令里,不識別映射。
:[addr]@: 先把光標放在 [addr] 行 (缺省是當前行) 上,然后重復上次的命令行。
:[addr]@@ 先把光標放在 [addr] 行 (缺省是當前行) 上,然后重復上次的 :@{0-9a-z"}。