第一章 vim中簡化刪除,游標移動和查詢操作
在個人vim使用基礎中,整理了最簡單的常規用法,但對於vim這個軟體來說,利用功能還遠遠不夠。
本質上講,我們的程式碼編寫工作是重複性的,凡是可以簡化重複性操作的方式,都會成倍節省我們的時間。
這正是vim的核心思想。
一,命令列模式下簡化刪除:
①刪除單個字元:【x】
②刪除從游標開始到單詞結尾:【dw】
假設游標在r處,按下【dw】後ruct這4個字元被刪掉了;
假設游標在單詞第一個字元處,按下【dw】會刪除整個單詞;
假設游標在單詞第一個字元處,按下【d2w】會刪除兩個連續單詞;
如圖struct list 兩個單詞被刪掉了。
③刪除游標停留的那整行:【dd】
假設想連續刪除多行,則用【4dd】連續刪除4行;
④從游標處往前刪除詞:【db】
和【dw】的作用方向正好相反。
⑤刪除整個單詞:【daw】
僅當游標停留在一個單詞開頭,【dw】才能刪除整個單詞,否則只能刪除一部分;
而【daw】不考慮游標的停留位置,只要在該單詞上,則會自動刪除整個單詞;
————————————————————————
點命令【.】含義是重複上次修改,上次修改的單位可以是字元,整行,甚至整個檔案。
因此如果刪除整行【dd】,配合【.】也可以起到重複操作的目的。
點命令最大的用處在於,每次從輸入模式到命令模式切換時,整個階段vim會記錄每一個按鍵操作,使用點命令可以重新執行所有的這些按鍵操作,就好像“一鍵回放”,我們可以把點命令當成一個巨集。
比如要給下面的結構體語句添上;號
按照常規方法做會比較慢,這時候游標先移動到第一條語句上,【A】【;】【ESC】
再反覆使用【j】【.】即可。
二,簡化行游標移動:
① 游標移動到行尾 【&】
② 游標移動到行尾並進入輸入模式,類似於【&】【a】: 【A】
③ 游標移動到行尾並回車,再進入輸入模式,類似於【&】【enter】【a】: 【o】
小o的作用類似於新建一空白行;
④ 游標移動到行首【^】
⑤ 游標移動到整個檔案頭部【gg】
⑥ 游標移動到整個檔案尾部【G】
三,簡化行內游標移動:
①游標移動到單個字元:【f】,也用於查詢。
比如要在本行移動游標至字元*處,直接【f*】即可
【f*】不能跨行,它無法找到第4條語句*list。
如果一行語句包含多個字元*,不需要重複按【f*】,使用【;】。
撤銷回退命令是【,】。
②游標移動到片語:【/】,也用於正向查詢。
假設輸入/hel,游標會自動移動到包含該字串下一處片語。
該命令能夠跨行,要找到下一行的hello,不需要重複輸入/hel,使用【n】。
撤銷回退命令是【N】。
同理反向移動游標及查詢:【?】
③無需輸入即可移動游標,查詢:【*】
前面兩種都需要輸入命令,只需要先把游標移動到單詞上,按下【*】,相當於執行【/整個單詞】,要查詢下一個,重複使用【n】。
④ 【w】移動游標到下一個單詞開頭,【b】移動游標到上一個單詞開頭,兩者均可跨行。
配合點命令【.】以及【*】星命令,就能實現快速的查詢並替換。
首先在需要被替換的單詞上按【*】,然後【a】修改第一個單詞,完成後【ESC】,此時vim已經記住了操作,剩下的就是重複【n】查詢下一個,【.】回放操作。
仔細體會vim對重複操作的簡化,追求的是一鍵移動,一鍵操作修改。