DaNmarner 在 Hacker News 最近關於 Vim 插件的帖子 回覆中瞭解到一個叫做pathogen 的 Vim 腳本,其作用是改善 Vim 管理插件的方式。試用過後發現 pathogen 果然強大。是以撰文分享。
問題剖析
可擴展性是優秀軟件的重要特點之一,而 Vim 從 Unix 系統一路傳成下來更是將可擴展性發揮到了極致。相信多數 Vim 的經驗用戶除了自己經精心維護的.vimrc
配置文件之外更是有一個用起來得心應手的插件寶庫,從而讓 Vim 滿足自己五花八門的使用需求。
Vim 大行其道,除了優秀插件衆多之外的另一個因素是插件機制的簡便易用。安裝插件的方法無外乎一下載二解壓,或者下載以後用運行 Vim 裏的安裝命令。沒有特殊指定,插件都是裝載~/.vim
目錄之下。通過複製,symlink 甚至版本控制工具把這個目錄備份一下,日後更是能在不同機器上瞬間找到熟悉的編輯環境。
可是時間一久,這個 ~/.vim
目錄難免變得越來越臃腫,各類插件橫七豎八的散落在那一個個autoload
,ftplugin
,indent
,syntax
,doc
等目錄裏面不說,很多插件還我行我素的自己創建一堆私有目錄,佔山爲王。等到你想刪除或更新某某插件的時候,要麼得去重新下載插件的壓縮包,找到它的五臟六腑都安插在了什麼位置,要麼只能憑着瞎猜法門一個目錄一個目錄的去找來。
解決之道
pathogen 讓每個插件佔有一個單獨的目錄,解決插件文件分散的問題。安裝了 pathogen 以後只要在~/.vim
(注:MS Windows 下貌似是~\vimfiles
,下同)裏建立一個bundle
目錄,然後把所有插件一一放在~/.vim/bundle/插件名
下面,就可以使用。插件的安裝過程與沒有
pathogen 時類似,但從安裝結束開始,一切的插件管理過程都能得到簡化。
試用過某個插件以後需要刪除?安裝在 bundle
目錄裏最後把插件的目錄一刪了之就行了。
想保持使用某個插件的最新版本?直接從插件的倉庫 checkout 一份代碼到 bundle
目錄,或者別的地方再 symlink 一下就行了。
想了解一下這個插件的實現方法?有了 pathogen 去哪裏找插件腳本再也不是問題了。
實戰演練
pathogen 只有一個單獨的腳本,所謂安裝就是把它放在你的 ~/.vim/autoload
目錄。
如果你有一個類 Unix 環境(Linux, Mac OS X),只需要下面這一條命令:
wget -O ~/.vim/autoload/pathogen.vim http://www.vim.org/scripts/download_script.php?src_id=12116
要啓用它,還要在 .vimrc
文件裏, filetype plugin indent on
之前的任何地方,加入下面這句:
call pathogen#runtime_append_all_bundles()
這樣就搞定了,把常用的插件都重裝在 ~/.vim/bundle
裏面吧!DaNmarner 個人喜歡直接把插件從倉庫裏 checkout 出來,以後直接通過版本控制來更新 Vim 插件。以 NERDTree 這個插件爲例,安裝起來是這樣的:
mkdir ~/.vim/bundle
cd ~/.vim/bundle
git clone http://github.com/scrooloose/nerdtree.git
更新到最新版本:
cd ~/.vim/bundle/nerdtree && git pull
刪除該插件:
rm -rf ~/.vim/bundle/nerdtree
怎麼樣,有了 pathogen ,管理 Vim 插件是不是簡單了很多?
轉自:http://blog.danmarner.com/me/entry/vim-pathogen/
參考:
http://ghosertblog.github.io/blog/2013/01/07/ubuntu-efficient-software/
http://lostjs.com/2012/02/04/use-pathogen-and-git-to-manage-vimfiles