無論你是手動安裝還是通過包管理器安裝,外掛都可以幫助你在工作流中打造一個完美的 Vim 。
雖然 Vim 是快速且高效的,但在預設情況下,它僅僅只是一個文字編輯器。至少,這就是沒有外掛的情況 Vim 應當具備的樣子,外掛構建在 Vim 之上,並新增額外的功能,使 Vim 不僅僅是一個輸入文字的視窗。有了合適的外掛組合,你可以控制你的生活,形成你自己獨特的 Vim 體驗。你可以自定義你的主題,你可以新增語法高亮,程式碼 linting,版本跟蹤器等等。
Vim 可以通過外掛進行擴充套件,但很長一段時間以來,並沒有官方的安裝方式去安裝這些外掛。從 Vim 8 開始,有一個關於外掛如何安裝和載入的結構。你可能會在網上或專案讀我檔案中遇到舊的說明,但只要你執行 Vim 8 或更高版本,你應該根據 Vim 的官方外掛安裝方法安裝或使用 Vim 包管理器。你可以使用包管理器,無論你執行的是什麼版本(包括比 8.x 更老的版本),這使得安裝過程比你自己維護更新更容易。
手動和自動安裝方法都值得了解,所以請繼續閱讀以了解這兩種方法。
所謂的 “Vim 包”是一個包含一個或多個外掛的目錄。預設情況下,你的 Vim 設定包含在 ~/.vim
中,這是 Vim 在啟動時尋找外掛的地方。(下面的範例使用了通用名稱 vendor
來表示外掛是從其它地方獲得的。)
當你啟動 Vim 時,它首先處理你的 .vimrc
檔案,然後掃描 ~/.vim
中的所有目錄,查詢包含在 pack/*/start
中的外掛。
預設情況下,你的 ~/.vim
目錄(如果你有的話)中沒有這樣的檔案結構,所以設定為:
$ mkdir -p ~/.vim/pack/vendor/start
現在,你可以將 Vim 外掛放在 ~/.vim/pack/vendor/start
中,它們會在你啟動 Vim 時自動載入。
例如,嘗試安裝一下 NERDTree,這是一個基於文字的 Vim 檔案管理器。首先,使用 Git 克隆 NERDTree 儲存庫的快照:
$ git clone --depth 1 \ https://github.com/preservim/nerdtree.git \ ~/.vim/pack/vendor/start/nerdtree
啟動 Vim 或者 gvim,然後鍵入如下命令:
:NERDTree
Vim 視窗左側將開啟一個檔案樹。
如果你不想讓一個外掛每次啟動 Vim 時都自動載入,你可以在 ~/.vim/pack/vendor
中建立 opt
資料夾:
$ mkdir ~/.vim/pack/vendor/opt
任何安裝到 opt
的外掛都可被 Vim 使用,但是只有當你使用 packadd
命令將它們新增到一個對談中時,它們才會被載入到記憶體中。例如,一個虛構的叫 foo 的外掛:
:packadd foo
Vim 官方建議每個外掛專案在 ~/.Vim/pack
中建立自己的目錄。例如,如果你要安裝 NERDTree 外掛和假想的 foo 外掛,你需要建立這樣的目錄結構:
$ mkdir -p ~/.vim/pack/NERDTree/start/$ git clone --depth 1 \ https://github.com/preservim/nerdtree.git \ ~/.vim/pack/NERDTree/start/NERDTree$ mkdir -p ~/.vim/pack/foo/start/$ git clone --depth 1 \ https://notabug.org/foo/foo.git \ ~/.vim/pack/foo/start/foo
這樣做是否方便取決於你。
自從 Vim 8 以後,包管理器變得不那麼有用了,但是一些使用者仍然喜歡它們,因為它們能夠自動更新一些外掛。有幾個包管理器可供選擇,並且它們各不相同,但是 vim-plug 有一些很棒的特性和最好的文件,這使我們很容易開始並在以後深入研究。
安裝 vim-plug,以便它在啟動時自動載入:
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
建立一個 ~/.vimrc
檔案(如果你還沒有這個檔案),然後輸入以下文字:
call plug#begin()Plug 'preservim/NERDTree'call plug#end()
每次要安裝外掛時,都必須在 plug#begin()
和 plug#end()
之間輸入外掛的名稱和位置(上面以 NERDTree 檔案管理器為例)。如果你所需的外掛未託管在 GitHub 上,你可以提供完整的 URL,而不僅僅是 GitHub 的使用者名稱和專案 ID。你甚至可以在 ~/.vim
目錄之外“安裝”本地外掛。
最後,啟動 Vim 並提示 vim-plug 安裝 ~/.vimrc
中列出的外掛:
:PlugInstall
等待外掛下載。
與手動安裝過程相比,編輯 ~/.vimrc
並使用命令來進行安裝可能看起來並沒有多省事,但是 vim-plug 的真正優勢在更新。更新所有安裝的外掛,使用這個 Vim 命令:
:PlugUpdate
如果你不想更新所有的外掛,你可以通過新增外掛的名字來更新任何外掛:
:PlugUpdate NERDTree
vim-plug 的另一個優點是它的匯出和恢復功能。Vim 使用者都知道,正是外掛的緣故,通常每個使用者使用 Vim 的工作方式都是獨一無二的。一旦你安裝和設定了正確的外掛組合,你最不想要的局面就是再也找不到它們。
Vim-plug 有這個命令來生成一個指令碼來恢復所有當前的外掛:
:PlugSnapshot ~/vim-plug.list
vim-plug 還有許多其他的功能,所以請參考它的計畫頁面以獲得完整的文件。
當你整天都在做一個專案時,你希望每一個小細節都能為你提供最好的服務。了解 Vim 和它的許多外掛,直到你為你所做的事情構建出一個完美的應用程式。
有喜歡的 Vim 外掛嗎?請在評論中告訴我們吧!