《Vim實用技巧(第2版)》——2.5 能夠重複,就別用次數
本節書摘來自異步社區《Vim實用技巧(第2版)》一書中的第2章,第2.5節,作者:【英】Drew Neil(尼爾)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
2.5 能夠重複,就別用次數
在處理某些特定工作時,使用次數可以使按鍵次數變得最少,不過並不是非得這樣不可。我們需要認真考慮次數與重複各自的優缺點。
假設在緩衝區裏有如下文字。
Delete more than one word
想把這段文字改為“Delete one word”,也就是說,要像這段文字裏所講的那樣刪除兩個單詞。
有幾種方式可以達到這一目的,d2w 和 2dw 都可以。使用 d2w,先調用刪除命令,然後以 2w 作為動作命令,可以把它解讀為“刪除兩個單詞”;然而 2dw 做的相反,這一次,次數作用於刪除命令,而動作命令隻跨越一個單詞,可以把這解讀為“做兩次刪除單詞的操作”。拋開語義不講,無論哪種方法,結果都是相同的。
現在,讓我們考慮另外一種方式,即dw.。這可以解讀為“刪除一個單詞,然後重複上次的操作”。
概括一下,我們的3種選擇 d2w、2dw 或者 dw. 都是3次按鍵,不過哪一種最好呢?
根據我們的討論,d2w 和 2dw 是相同的,在執行完兩者中的任一個後,可以按 u 鍵撤銷,這樣兩個被刪除的單詞又會回來。或者,我們不是用撤銷,而是用 . 命令重複執行它,這就會刪除後麵的兩個單詞。
對於 dw. 的情形,按 u 或 . 的結果會有細微的差別。這裏的修改是 dw,即刪除一個單詞。因此,如果想恢複這兩個被刪除的單詞,必須撤銷兩次,按 uu(或者,如果你願意,也可以按 2u)。按 . 則隻刪除後麵的一個單詞,而不是兩個。
現在假設我們原本是想刪除3個單詞,而不是2個。由於判斷出了點差錯,我們執行了 d2w 而不是 d3w,那接下來怎麼做?我們不能使用 . 命令,因為那會總共刪除4個單詞。因此,我們或是先撤銷而後修正次數(ud3w),或是繼續刪除下一個單詞(dw)。
現在考慮另一種方案,如果我們在第一處地方用的是 dw. 命令,那麼隻要再多重複一次 . 命令就行了。因為我們最初的修改隻是簡單的 dw,因此u 命令和 . 命令都具有更細的粒度,每次隻作用於一個單詞。
現在假設我們想刪除7個單詞,我們可以運行 d7w,或是 dw......(即 dw 後麵跟6次 . 命令)。計算一下按鍵的次數,哪個命令勝出是很顯而易見的。不過你真地確信自己數對了次數嗎?
計算次數很是討厭,因此我寧願按6次 . 命令,也不願意隻為減少按鍵的次數,而浪費同樣的時間去統計次數。如果我多按了一次 . 命令怎麼辦?沒關係,隻要按一次 u 鍵就可以回退回來。
還記得嗎,我們的口訣是(參見技巧4):執行、重複、回退。這裏就是在把它付諸行動。
隻在必要時使用次數
假設我們想把文字“I have a couple of questions”改為“I have some more questions”,可以用下麵的方式做。
在此場景中,使用 . 命令的意義不大,我們可以刪除一個單詞,然後再用 . 命令刪除另一個,但隨後我們還得切換到插入模式(例如,使用 i 或 cw)。對我來說這麼做很不順手,我反而更願意用次數。
使用次數的另一個好處是:它保留了一個幹淨、連貫的撤銷曆史記錄。完成這次修改後,按一下 u 鍵就可以撤銷整個修改,這和技巧8中的討論是一致的。
對於是用次數風格(d5w)還是用重複風格(dw....)也有同樣的爭論,因此我的偏好看起來似乎不太一致。對此,你要總結自己的觀點,這取決於你怎麼看保留幹淨撤銷曆史記錄的價值,以及你是否覺得用次數令人生厭。
最後更新:2017-06-06 07:38:09