學會組合只是 vim 入門,雖然是入門也非常博大精深了,像有追求的 vimer 總是在探索更精簡的組合命令,探索如何用更少的按鍵實現某種操作,再把更精簡的組合命令練成肌肉記憶。
學會重復命令可以讓你的 vim 水平再上一層,學會重復命令才能你再也不想打開別的編輯器(好像僅僅學會組合命令也能達到同樣的效果)。
移動命令
-
;
,重復上一次f
、F
、t
、T
命令 -
,
,逆向重復上一次f
、F
、t
、T
命令 -
n
,重復上一次/
、?
搜索命令 -
N
,逆向重復上一次/
、?
搜索命令
操作命令
-
.
,重復上一次操作,主要用來重復組合命令,畢竟組合命令按鍵比較多呀。 -
daw..
,刪除三個單詞,比dawdawdaw
短多了,當然還有更短的3daw
,但.
的好處在于你不用一開始就考慮好刪幾個單詞,只用一直.
到不需要刪為止。 -
A;<esc>j.j.jj.
,添加 4 個行尾分號,最后一個分號按兩次j
,可以隔一行再添加分號。這是「移動點重復」模式,在「重復執行非常細小的操作,而且重復過程中可能需要隨時調整,重復次數也不多」的場景下可以使用這個模式。像這類非常細微的日常重復也被簡化到極致,這就是 vim 的進階玩法。一般情況下你的編輯工作應該是從頭到尾都用這個模式完成的。
宏,錄制鍵盤
-
qqngUiwq
,第一個 q 用來啟動宏錄制,第二個 q 是宏的名稱,然后是錄制的內容,最后用 q 停止錄制。錄制「搜索下一項然后大寫」并儲存到名為 q 的宏,宏相當于把移動命令和操作命令放在一起重復執行了,在大型的、確定的、無干擾的情況下使用,比如復雜的排版格式重構。 -
@q
執行一次名為 q 的宏。在錄制這個宏之前已經執行過/abc
命令了,所以在執行時會搜索包含 abc 的單詞然后大寫。 -
@@
,意思是執行上次執行過的宏,也就是 q 宏。這樣你就可以按著@@
不松來連續多次執行宏了。 -
99@q
或99@@
,可以加上宏的執行次數,這是執行 99 次。
大招來了。
-
qqqqqngUiw@qq
,根據上面的知識可以知道前面三個 q 意思是清空 q 宏,然后正常錄制,最后在錄制結尾處調用 q 宏,因為這時 q 宏是空的,所以這最后一步無效果,現在結束錄制以后 q 宏就有內容了,想想@q
執行宏會是什么效果。所以遞歸宏就誕生了,嚇得都變成粗體字了。