多語言程式設計必備的十大 Vim 外掛

2019-12-05 06:23:00

使用這 10 個 Vim 外掛,可以讓你在寫程式碼或運維時,感覺更棒。

我使用 Vim 文字編輯器大約 20 年了。有一段時間,我一直在客製化我的 Vim 設定,但在只有在最近兩年我才會使用外掛。

最近,當我重新安裝系統時(就像我經常做的那樣),我覺得這是一次好的機會,我想找出多種程式語言環境下的最佳 Vim 外掛,以及如何將這些外掛和每種語言結合起來。

有時,我會為特定的語言和設定使用特定的外掛(例如,我只在 Ansible 設定中安裝 Rocannon),在此不細講了。不過下面介紹的 10 個 Vim 外掛都是我的最愛,無論使用哪種程式語言,我幾乎都會使用它們。

1、Volt

我的首選並不是一個外掛,但是它可以替換類似於 Vundle 的外掛,所以在此介紹。

Volt 是一個不依存於 Vim 的 Vim 外掛管理器。你可以用它安裝外掛,並建立名為“profile”的外掛組合。你可以使用一個簡單的命令 volt profile set myprofile 啟用新的設定。這樣我可以做到這樣的事情,如為 Python 設定單獨啟用 indentpython 外掛。Volt 還提供了一種針對每個外掛設定的簡單方法,這些設定會在“profile”之間共用,因此只需要安裝一次外掛,就可以在多個“profile”之間使用。

Volt 還是相對較新且不夠完美(比如,不管你想要使用多少個“profile”,每個外掛只能有一個組態檔),但除此之外,我發現它非常方便、快速和簡單。

Volt plugin

2、Vim-Rainbow

除了 Python,幾乎所有的主流程式語言都使用括號(小括號、方括號和大括號)。通常,它們會巢狀使用多對括號,因此很難搞清楚某個括號的開閉區間。我發現自己經常要數小括號,尤其是在複雜的 Bash 指令碼中,以確保無誤。

這時候就需要 vim-rainbow 外掛!它為每對括號設定不同的顏色,因此很容易識別出哪些括號是一對括號。它非常有用而且五彩斑斕。

vim-rainbow plugin

3、lightline

Vim 有很多這種外掛,例如 Powerline,它會在底部欄顯示你正在處理的檔案、游標所在的檔案位置以及檔案型別等資訊。這些外掛各有利弊,在簡單比較後,我選擇了 lightline。它相對較小,便於安裝和擴充套件,並且不依賴於其他工具或外掛。

Lightline plugin

4、NERDTree

NERDTree 是一個很經典的外掛。在大型專案中,你可能很難找到想要編輯的內容所在檔案的確切名稱和路徑。使用快捷鍵(我使用的是 F7,因為我在 .vimrc 中設定了這個快捷鍵),搜尋窗會以垂直分屏的方式開啟,就可以輕鬆找到所需檔案並開啟它。對於大型專案,這是必備外掛。對於那些經常忘記檔名的人也很有用,比如我。

NERDTree vim plugin

5、NERD Commenter

程式設計師們在寫程式碼時,有時會遇到一些難以偵錯的問題,導致他們想要注釋或不執行某段程式碼。這時候就需要 NERD Commenter 出場了。選擇程式碼段,按 Leader 鍵 + cc,程式碼就會被註釋掉。(標準的 Vim Leader 鍵 是 / 字元。)按 Leader 鍵 + cn,取消註釋。對於大多數檔案型別,NERD Commenter 會自動使用正確的註釋符。例如,如果你正在編輯 BIND 區域檔案,並將檔案型別設定為 BIND 區域檔案,Vim 會正確地使用 ;(分號)字元進行注釋。

NERD Commenter

6、Solarized

我喜歡我的 Vim 主題配色。我也喜歡終端的主題色。我一直在 Vim 上使用 Solarized 配色,並且將我的終端、資料夾配色和 Vim 設為一致。

但是,有時我會根據周邊環境、螢幕亮度以及是否需要分享投屏,來切換明暗模式。

顯然,你可以選擇自己喜歡的任何配色方案,但我喜歡 Solarized,因為它有明暗模式功能,它可以簡單快捷地切換兩種模式。我的第二個選擇是 Monokai。Volt 外掛管理器讓我可以輕鬆地在兩者之間切換,因此我在 Python 程式設計時,使用 Monokai;Bash 程式設計時,使用 Solarized。

我沒有給 Solarized 找相應的圖片,因為本文中的所有其他圖片都使用了 Solarized 中的淺色或深色效果,可以確認一下這些圖片。

7、fzf

當尋找一個檔案時,有時你想要一個檔案瀏覽器,有時你只想在鍵盤上敲打出與檔名模糊匹配的內容,對嗎?

fzf(全稱 “模糊查詢器”)外掛提供了這一功能。打出 :FZF 並輸入檔名內容。不斷縮短的列表將顯示出與你輸入的檔名內容相匹配的一些檔案。我經常使用它,最近使用它的頻率估計比使用 NERDTree 還多。缺點是這個外掛依賴於 fzf binary,因此也必須安裝這個依賴包。它適用於 Fedora、Debian 和 Arch,據我所知並不在 EPEL 中。

fzf Vim plugin

8、ack

有時,你需要搜尋包含特定行或特定單詞的檔案。我真的很喜歡使用 ack 外掛,最好與 ag 結合使用,它倆的組合又被稱為 “silver searcher”。這一組合的速度非常快,覆蓋了 grepvimgrep 的絕大多數使用場景。缺點是你需要安裝 ackag 才能正常執行。好訊息是 Fedora 和 EPEL7 都可以使用 agack

ack vim plugin

9、gitgutter

大多數 IT 人員都使用 Git 和 Git 倉庫中的檔案進行工作。gitgutter 外掛在行號附近新增了一列,通過符號顯示該行的狀態為:已更改(~)、已新增(+)或者已刪除(-)。這有利於跟蹤你所做的更改,並且可以使你專注於手頭的任務,例如編寫修補程式來修復一個關鍵錯誤。

gitgutter vim plugin

10、Tag List

如果你在一個很大的檔案中編寫程式碼,會很容易忘記當前所在的位置,你可能需要上下捲動來查詢某個功能。使用 Tag List 外掛,只需要輸入 :Tlist,就能垂直分屏顯示出包含變數、型別、類和函數的程式碼,你可以輕鬆跳轉到這些變數、型別、類和函數。這個功能對於多語言同樣適用,例如 Java、Python 以及任何能夠使用 ctags 功能的檔案型別。

Tag List vim plugin

以上介紹的 10 個 Vim 外掛使我作為系統管理員和兼職程式設計師的生活變得更輕鬆。你正在使用哪些 Vim 外掛?請在評論中分享你最愛的外掛。