閱讀411 返回首頁    go 技術社區[雲棲]


《Vim實用技巧(第2版)》——1.3 以退為進

本節書摘來自異步社區《Vim實用技巧(第2版)》一書中的第1章,第1.3節,作者:【英】Drew Neil(尼爾)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

1.3 以退為進

我們可以用一種常用的Vim操作習慣在一個字符前後各添加一個空格。乍一看,這種方法有點古怪,不過其好處是可重複,這將使我們可以事半功倍地完成工作。
假設有一行代碼看起來是這樣的:

the_vim_way/3_concat.js

var foo = "method("+argument1+","+argument2+")";
在JavaScript裏把字符串連接到一起從來都不美觀,但可以像下麵這樣在 + 號前後各添加一個空格,讓肉眼更容易識別。

var foo = "method(" + argument1 + "," + argument2 + ")";
使修改可重複
下麵的慣用方法可以解決這個問題。
screenshot
s 命令把兩個操作合並為一個:它先刪除光標下的字符,然後進入插入模式。在刪除 + 號後,先輸入␣+␣,然後退出插入模式。

先後退一步,然後前進三步,這是個奇怪的小花招,看起來可能不夠直接。但這樣做最大的好處是:我們可以用 . 命令重複這一修改。我們所要做的隻是把光標移到下一個 + 號處,然後用 . 命令重複這一操作即可。

使移動可重複
本例中還有另外一個小竅門。f{char} 命令讓Vim查找下一處指定字符出現的位置,如果找到了,就直接把光標移到那裏(參見 :h fscreenshot)。因此,輸入 f+ 時,光標會直接移到下一個 + 號所在的位置。我們將會在技巧50裏學到更多關於 f{char} 命令的知識。

完成第一處修改後,可以重複按 f+ 命令跳到下一個 + 號所在的位置。不過,還有一種更好的方法可以用。; 命令會重複查找上次 f 命令所查找的字符,因此不用輸入4次 f+,而是隻輸入一次,後麵跟著再用3次 ; 命令。

合而為一
; 命令帶我們到下一個目標字符上, . 命令則重複上次的修改。因此,可以連續輸入3次 ;. 來完成全部修改。看起來是不是很熟悉?

與其和Vim區分模式的編輯模型做鬥爭,倒不如與它一起協同工作。然後,你就會發現它能把特定任務變得多麼的容易。

最後更新:2017-06-06 07:38:12

  上一篇:go  《Vim實用技巧(第2版)》——1.4 執行、重複、回退
  下一篇:go  《Vim實用技巧(第2版)》——1.2 不要自我重複