Vim 有什麼奇技淫巧?

Vim Bash Tmux 力扣LeetCode 2019-04-07
Vim 有什麼奇技淫巧?

在之前發佈過的一篇文章——Nova 帶你快速入門 Vim 中,我們介紹了一些 Vim 的簡單入門教程,在評論區的反饋中,有些讀者希望可以加入一些更加進階的 Vim 教程,那麼本文就是啦~

在有了一些 Vim 基礎之後,下面我給大家介紹一些更加硬核的技巧。鑑於你已經完成了 Vim 的入門,接下來的內容不會很難,如果希望對於 Vim 以及它的編輯方式有一個更加深入的認識,你還需要學習一些相關知識,比如:

  • Bash 的一些基本指令
  • Regular Expression(正則表達式)

對於 Vim 的學習,有一本書在網上被很多人推薦——Practical Vim(中文名:《Vim 實用教程》):

Vim 有什麼奇技淫巧?

不過個人感覺這本書並不適合所有人,這裡建議有興趣的同學,可以先看看電子版中感興趣的章節,對自己有所幫助的話,再考慮購買紙質版本。

我們從一個簡單的需求開始,文本中有很多單詞,或者變量,我們需要把它們全部給替換了(例如把:"foo" 替換成 "bar"),那麼我們該如何操作呢?很簡單,背板就好啦:

Vim 有什麼奇技淫巧?

注意,上面我們提到的是將一個文件中所有的單詞給替換了,但是有的時候我們並不希望全部替換,那又該如何操作呢?

Vim 有什麼奇技淫巧?

這樣就會在每次替換前給予一個確認的機會。

不過,如果你可以確定需要替換的是哪些行的話,還可以這樣子玩:

Vim 有什麼奇技淫巧?

這樣就會把第 3 到 10 行(包括端點)之間的所有 foo 替換為 bar。

Bash + Vim

我們來看看對於 Bash 有一些基礎的話,在 Vim 上有什麼操作的空間,假設我們在編輯一個文件,突然意識到我們需要創建一個新的文件,此時如果有 Tmux 的話,可以考慮直接開一個新的 Session 來創建文件,不過我們為什麼不嘗試一個更加簡單的方式呢?即直接在 Vim 中執行 Bash 指令,下面是實現方法:

Vim 有什麼奇技淫巧?

那麼對於上面的需求,我們只需要切換到命令模式之後:

Vim 有什麼奇技淫巧?

就好啦,是不是很容易記住?

此外,這個命令還有一些相關的指令,例如直接執行上一次的指令:

Vim 有什麼奇技淫巧?

執行完成後自動回到 Vim 環境:

Vim 有什麼奇技淫巧?


Regular Expression + Vim

正則表達式比較複雜,但是如果可以靈活運用的話,對於 Vim 的使用會更上一個檔次,我們先來考慮一個實際的需求,給一個字符串兩邊包裹上引號,在一些比較好的編輯器中我們只需要鼠標選定這個字符串然後按一下引號就可以了,那麼在 Vim 中我們該如何操作呢?

此時我們可以考慮在 .vimrc 中添加如下:

Vim 有什麼奇技淫巧?

並且在命令模式下在需要的單詞上 cx 即可,雖然看上去有些麻煩,但是屬於一次投資,終生使用的快捷方式。

用正則表達式還可以完成許多常見的操作,例如:

  • 刪除行尾空格::%s/\s+$//g
  • 刪除沒有內容的空行:%s/^$// 或者 g/^$/d
  • 刪除包含有空格組成的空行:%s/^\s*$// 或者 g/^\s*$/d
  • 除以空格或 TAB 開頭到結尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d

等,如果通篇的正則看上去令你非常頭疼的話,建議先收藏本文,然後嘗試快速入門一波正則表達式,再回來看看本文中講述的一些 Vim 特有的“騷操作”吧~

本文作者:Nova

聲明:本文歸 “力扣” 版權所有,如需轉載請聯繫。

文中部分圖片來源於網絡,為非商業用途使用,如有侵權聯繫刪除。

相關推薦

推薦中...