Vim 插件管理器對比(轉)

做者:LiTuX
連接:https://www.zhihu.com/question/24294358/answer/27362814
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

早些年,vim 插件只能本身扔到 ~/.vim 或者 vimfiles 裏面,因爲插件的結構很 unix,因而同一個插件,plugin, ftplugin, doc, syntax 等等文件夾下面灰常混亂的存在着各類東西,並且要用戶本身管理安裝、升級、卸載、配置。好特麼煩!

而後,*nix 平臺上有人受不了了,弄過幾個獨立的第三方插件管理器, 好比這裏面有個東東叫 vim addon manager(請記住這個名字 XD) (固然,請原諒我,還有好幾個相似的東東我都忘了叫啥了,有誰知道歡迎補充) vam ruby 寫的, 看名字就知道丫是幹嗎用的 不過…… 我沒用過它因此無法評價 (曾經「用過」的一個第三方管理器叫 vimana,什麼表現嘛我就不記得了)。

但這種第三方的通常都是某種腳本語言寫的,在 *nix 上還好,讓咱們 windows 用戶腫麼辦……而後,有個灰常霸氣的東東出現了,——vimball。這貨能夠看作是 vim 界的 docstrip(其實更簡潔),簡直是個神器。今後裝插件易如反掌,麻麻不再用擔憂我不會裝插件啦!三個咒:
vim XXX.vba :so % :q
直接搞定了有木有!卸載也就一行命令的事(嗯?好像沒用過哎)。惟一須要對付的是,——你要的插件須要提供那個 vba 才行(並且這個插件應該是純 vim script)。

因而這就有了限制。那其餘的呢尤爲是提供 zip/tarball 的咋辦。基於 vimball 修改 runtimepath 的理念,一個更加沒有限制的插件「管理器」誕生了,這貨叫 pathogen(by tpope 大神)。只需把你的 tarball 整個解到 pathogen 的管理目錄(bundle)下,vimrc 稍做處理,這個插件就能夠用啦!曾經那個混亂的目錄結構 sayonara~~ 插件管理變成文件管理,很方便有木有!

但是,懶惰的人們嫌這個還不夠。恰好,github 流行起來,不少 vim 插件的做者都將插件放到 github 上託管。因而有人經過 git module 來管理本身的 vim 插件,以達到「一份 vimrc 走遍天下」的目的,不須要自備 vimfiles 目錄。在這個背景下,劃時代的插件管理器終於誕生了,這貨叫 vundle(by gmarik。順便提一句,vundle 剛不久前經歷了一次大版本升級,主要命令發生了變化,請用戶注意)。

vundle 誕生以後,很長時間內這成爲了衆多 vimmer 的標配(至今還是),這貨必定程度上真正達到了一個 vimrc 搞定一切的「終極」目標,——對大部分插件尤爲所有是 vim script 至多依賴 +python/+lua 等的插件而言,vundle 足夠方便足夠簡潔,而且有着足夠實用的管理方式:安裝、升級、停用、卸載都僅需一條命令,必須是 life changing 的評分。惟一須要的是,你用的插件在 github 上有對應的 repo,或者 http://vim.org 上註冊存在,而且你要有個能用的 git。

而後,某些高級別的插件,使得 vundle 又「不夠用」了。咱們知道,大部分 vim 插件都是腳本,可是仍然存在一些插件會自帶個 lib(打個廣告,鄙人的 vimcaps 也屬於這類),那麼,若是插件做者釋出的是 lib 的源碼,或者 lib 依賴於平臺須要本地編譯,vundle 模式的「東西取下來,加路徑」等一坨設定就不夠用了,——咱們的 lib 要編譯過,插件才能用;又或者,不少牛人作了很多插件以後,將其中的某些部分抽取出來,因而插件之間有依賴關係(WTF!),單獨 :Plugin 一個插件可能不夠,又或者,有人不喜歡 github 而是把東西扔到 bitbucket or somewhere else(目前 vundle 已經支持非 github 的 repo)或者我用的是 svn 呢啊 hg 呢啊……在這些愈來愈複雜的需求下,人們不知足於 vundle 提供的便利性,(好吧你或許猜到了我要說的是 Shougo 大神升級版 vundle)neobundle 被造了出來。這貨既然號稱下一代的 vundle,天然比 vundle 要牛 X 一些,好比針對 post install action,neobundle 可直接在 vimrc 中配置動做,更加方便懶人們拿一個 vimrc 扔到機器上稍微初始化下就獲得熟悉的工做環境這個需求。然而,這貨我沒用過,細節之處沒法評價。不過鑑於 Shougo 大神的做品質量一直很高,相信這個管理器也不例外。BTW,若是用了 Shougo 大神本身的 vimproc,這貨能夠異步安裝/更新插件。固然,Shougo 大神很謙遜的表示,這個「下一代」可能還不夠穩定,追求穩定的同志還請繼續使用 vundle。

接下來,鄙人一直在用的插件管理器要登場啦!還記得最開始要你記住的那個名字麼?Bingo,vim addon manager,相信你在試着搜索這個名字的時候,Google 給出的應該是我如今提到的這個(by MarcWeber 大神),而不是前面那個 Ruby 的應用 XD。(And 接下來讓咱們簡稱它 VAM 吧)

VAM 徹底不一樣於 vundle 及相似物(是的,除了 neobundle 以外,還有其餘類似的管理器哦),並且 VAM 灰常龐大,提供了各類至少很炫酷很碉堡的功能例如:按插件名字搜索,插件名稱補全,自動解決依賴關係、(必定程度上)自動保存本地修改等等。因此在我看來,一直到 VAM 誕生,vim 纔算是有了真正意義上的「插件管理器」,你再也不須要在乎你要的插件究竟是 http://vim.org 上的,github 上的,bitbucket 上的仍是 google code 上,不須要關心究竟是 git,hg,svn,甚至 http://vim.org 上的 zip,tgz,bz2 甚至 vimball……全部 dirty 的東西通通不用你管,你只須要知道你想要的插件在 VAM 的數據庫中叫什麼(並且好消息是,MarcWeber、Shougo 等人已經聯手弄了個 vim-pi 的數據庫方便各類插件管理器共享插件信息),雖然在初期,插件的名字曾經發生過變化(不知道如今穩定下來沒有)、插件名稱可能不太好記、插件名稱區分大小寫因此容易弄混……

但是!儘管我是 VAM 用戶,不得不說這貨灰常龐大複雜,不少高級功能至今我也沒弄明白,只是按照我目前的配置,it works 並且 work 的還不錯這樣。

總結,目前主流比較流行的 vim 插件管理(僅依賴 vim)主要是這四家:Pathogen、Vundle、NeoBundle 和 VAM,最主要須要考慮的幾點有:Vundle 的用戶相對最多並且使用比較簡潔方便;NeoBundle 功能更增強大,能夠指定特定版本;VAM 只須要大致上記住插件名字就可使用,模糊匹配和補全功能,自動解決依賴關係。

與 Ruby/perl 版本的管理器相比,這四家都會改 rtp,從而使得 autoload 延遲加載時 vim 的搜索路徑增多(尤爲安裝的插件多了以後),可能會影響到 vim 的速度。

And 我快寫完的時候,找到了這個: topic/vim plugin managment (MarcWeber 大神總結的?應該很全面了)
相關文章
相關標籤/搜索