在之前發佈過的一篇文章—— 中,我們介紹了一些 Vim 的簡單入門教程,在評論區的反饋中,有些讀者希望可以加入一些更加進階的 Vim 教程,那麼本文就是啦~
在有了一些 Vim 基礎之後,下面我給大家介紹一些更加硬核的技巧。鑑於你已經完成了 Vim 的入門,接下來的內容不會很難,如果希望對於 Vim 以及它的編輯方式有一個更加深入的認識,你還需要學習一些相關知識,比如:
Bash 的一些基本指令Regular Expression(正則表達式)對於 Vim 的學習,有一本書在網上被很多人推薦——Practical Vim(中文名:《Vim 實用教程》):
不過個人感覺這本書並不適合所有人,這裡建議有興趣的同學,可以先看看電子版中感興趣的章節,對自己有所幫助的話,再考慮購買紙質版本。
我們從一個簡單的需求開始,文本中有很多單詞,或者變量,我們需要把它們全部給替換了(例如把:"foo" 替換成 "bar"),那麼我們該如何操作呢?很簡單,背板就好啦:
注意,上面我們提到的是將一個文件中所有的單詞給替換了,但是有的時候我們並不希望全部替換,那又該如何操作呢?
這樣就會在每次替換前給予一個確認的機會。
不過,如果你可以確定需要替換的是哪些行的話,還可以這樣子玩:
這樣就會把第 3 到 10 行(包括端點)之間的所有 foo 替換為 bar。
Bash + Vim
我們來看看對於 Bash 有一些基礎的話,在 Vim 上有什麼操作的空間,假設我們在編輯一個文件,突然意識到我們需要創建一個新的文件,此時如果有 Tmux 的話,可以考慮直接開一個新的 Session 來創建文件,不過我們為什麼不嘗試一個更加簡單的方式呢?即直接在 Vim 中執行 Bash 指令,下面是實現方法:
那麼對於上面的需求,我們只需要切換到命令模式之後:
就好啦,是不是很容易記住?
此外,這個命令還有一些相關的指令,例如直接執行上一次的指令:
執行完成後自動回到 Vim 環境:
Regular Expression + Vim
正則表達式比較複雜,但是如果可以靈活運用的話,對於 Vim 的使用會更上一個檔次,我們先來考慮一個實際的需求,給一個字符串兩邊包裹上引號,在一些比較好的編輯器中我們只需要鼠標選定這個字符串然後按一下引號就可以了,那麼在 Vim 中我們該如何操作呢?
此時我們可以考慮在 .vimrc 中添加如下:
並且在命令模式下在需要的單詞上 cx 即可,雖然看上去有些麻煩,但是屬於一次投資,終生使用的快捷方式。
用正則表達式還可以完成許多常見的操作,例如:
刪除行尾空格::%s/\s+$//g刪除沒有內容的空行:%s/^$// 或者 g/^$/d刪除包含有空格組成的空行:%s/^\s*$// 或者 g/^\s*$/d除以空格或 TAB 開頭到結尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d等,如果通篇的正則看上去令你非常頭疼的話,建議先收藏本文,然後嘗試快速入門一波正則表達式,再回來看看本文中講述的一些 Vim 特有的“騷操作”吧~