用過Linux的人無不知道Vim,其被稱作“編輯器之神”(與另一個“神的編輯器” EMACS 一直並列文本編輯器兩大無可替代的“神器”之位)。
如果知道Vim的前身Vi的作者Bill Joy,就會明白這個神級程序員所創造的神級編輯器本質上就是為程序員們量身定製的。
Vim具有入門易、深入難的特點,熟練者愛它愛的要死,入門者卻覺得極其難用。為什麼呢?快捷鍵多如牛毛。看看下面的Vim鍵盤圖就心亂如麻、望而卻步了。
但是,Vim的命令的使用技巧並不需要全部掌握,瞭解其精髓及少量最能提高效率的命令即可以遊刃有餘。
今天我們接著前幾天的 Linux Shell 和 MySQL 技巧,繼續提高效率第3篇—— Vim 提速篇。總結了常用的提升效率的幾個技巧,希望對大家有用。
真經——“普通模式”就是最普通的模式
初學者通常特別喜歡插入模式(或者也叫做編輯模式),但是這種模式經常會出現粘貼錯亂、backspace按鍵無法刪除字符等各種初學者無法理解的問題。
所以,真經就是,普通模式(或者也叫做正常模式)才是你在用Vim的時候花最多時間在上面的模式。
這裡需要有一個正確的意識形態:把插入模式當成是一個極不正常、不普通的狀態,當成在迫不得已的時候才要去的一個最不想去的地方,一旦在插入模式下完成操作馬上、立即、迅速離開!切換回普通模式。
第1條 放棄上下左右箭頭鍵,開始使用hjkl鍵
上下左右鍵的使用經常會帶來編輯器展示神經錯亂的問題,這時候需要習慣去使用h、j、k、l鍵。
原因就是,一來編輯器不會展示不正常,二來你的手不用跋涉十幾二十釐米甚至更多,從正常的字符鍵盤跑到上下左右鍵那裡去切換位置。
第2條 減少使用hjkl鍵,甚至不用
這一條似乎與第1條相悖,但實際上是進一步提速。因為h、j、k、l鍵實在是太細粒度了,如果想跳躍移動的更高效,可以使用:
1)單詞跳躍移動——“w”、“b”、“e”、“ge”
2)整句跳躍移動——“(”、“)”
3)整段跳躍移動——“{”、“}”
第3條 快速定位光標位置
1)當前行快速移動到指定字符相應位置——“f”、“t”、“F”、“T”
2)翻頁:翻頁有多種方式,Pageup、Pagedown雖然能用,但是同樣手要離開字符區十幾釐米找到他們然後再回字符區,那麼可以使用CTRL-B和CTRL-F翻頁;
3)相對光標翻頁:
- "zt"(將當前行變為屏幕第一行)
- "zz"(將當前行變為屏幕中間行)
- "zb"(將當前行變為屏幕尾行)
比上述普通翻頁好在能夠定位相對光標,不至於迷失位置
第4條 屏幕範圍內快速移動光標
快速跳躍到屏幕:
- 最上端:“H”
- 中部:“M”
- 最下端:“L”
其實很好記,就是High(高)、Middle(中部)、Low(低)。
第5條 相對行號
這一條對於程序員真的很有用。我們可以看一下絕對行號——“:set nu”:
然後看一下相對行號——":set relativenumber":
體會一下:
1)多行刪除:如果你要刪除當前行後面的一段函數,你是採用一行一行的dd呢,還是在通過絕對行號中將要刪除的行數算一算再刪除?
如果採用相對行號,那就好辦了,將光標移到對應位置,就可以一目瞭然要刪除的那一段函數有多少行,假如為8,直接輸入“8dd”刪除即可。
2)多行復制、多行註釋等等,同樣使用相對行號會更加方便。
比如:如果是想複製相對0點位置上面的第13行到第8行到相對0點位置下面的第6行,那麼只需要":-13,-8 co 6"就可以了
第6條 查找必用的快捷鍵
查找的幾個快捷鍵必須要掌握,因為太常用了:
- "/" 正向查
- "?" 反向查
- "n"和“N”是正向和方向重複上一次查找命令
- "q/"和"q?"會打開一個新的查找歷史記錄窗口。
- 此外,第3條的“f”、“t”、“F”、“T”具有同一行內的查找功能。
最後
Vim還有一個很大的特點,就是可擴展性極好,已經不止是一個編輯器,還可以打遊戲、收郵件、聽音樂......
此外Vim還有無數的插件,比如為了初學者擺脫使用上下左右鍵和hjkl鍵、上下頁鍵的習慣,甚至還有一個HardMode的插件禁用了這些鍵。
歸根結底,Vim還是一個文本編輯器,我們使用提速技巧的原則,不求最多,但求最合適。那麼你有哪些覺得用的順手又高效的Vim技巧呢?歡迎在評論區留言。