一鍵雙雕——復合命令
很多Vim的單鍵命令都可以被看成兩個或多個其他命令的組合。下面是類似的一些例子,它們有什么共同點呢?
復合命令 | 等效的長命令 |
---|---|
C | c$ |
S | ^c |
I | ^i |
A | $a |
o | A<CR> |
O | ko |
s | cl |
當我們輸入ko命令時,想想自己在干嘛,然后要意識到我們可以把它換成O命令。
這些命令的共同點是,它們全都會從普通模式切換到插入模式。這會對.
命令有怎樣的影響??當我們足夠熟練時,我們在執行一些常規的插入任務完全不用進行插入模式就可以用.
命令快速重復之前操作。
s
命令把兩個操作合并為一個:它先刪除光標下的字符,然后進入插入模式。f{char}
命令讓Vim查找下一處指定字符出現的位置,如果找到了,就把光標移到那里(參見:h f)。當我們輸入f+
時,光標會直接移到下一個+
號所在的位置。使用;
命令會重復查找上次f
命令所查找的字符。這樣可以實現快速的查找與替換。
執行、重復、回退
在面對重復性工作時,我們需要讓移動動作和修改都能夠重復,這樣就達到了最佳的編輯模式。Vim會記住我們的操作,并使最常用的快捷鍵觸手可及,以方便我們重復執行它們。
除了.
命令,有些命令能以其他的方式重復。@:
可以用來重復任意Ex命令;我們也可以輸入&
命令來重復上次的:substitute
命令(它本身就是一條Ex命令)。
這樣操作起來確實很爽,但是一不小心摁錯或者多摁有可能導致很糟糕的情況。所以當我們不小心做過頭時,知道回退會很有幫助。
可重復的操作及如何回退
目的 | 操作 | 重復 | 回退 |
---|---|---|---|
做出一個修改 | {edit} | . |
u |
在行內查找下一個指定字符 | f{char}/t{char} |
; |
, |
在行內查找上一個指定字符 | F{char}/T{char} |
; |
, |
在文檔中尋找下一處匹配項 | /pattern<CR>
|
n |
N |
在文檔中尋找上一處匹配項 | ?pattern<CR>
|
n |
N |
執行替換 | :s/target/replacement | & |
u |
執行一系列修改 | qx{changes}q |
@x |
u |