Vimscript 新希望:用Pathogen配置插件

2018-02-24 16:02 更新

Vim的插件配置方式,在你僅僅添加一個文件來自定義自己的Vim體驗時很合理, 但當你想要使用別人寫的插件時,這種方式會導致一團糟。

在過去,要想使用別人寫好的插件,你得下載所有文件并逐一正確地放置它們。 你也可能使用ziptar來替你做放置的工作。

在這個過程中有些明顯的問題:

  • 當你想更新插件的時候怎么辦?你可以覆蓋舊的文件, 但如果作者刪除了某個文件,你怎么知道你要手工刪除對應文件?
  • 假如有兩個插件正好使用了同樣的文件名(比如utils.vim或別的更大眾的名字)呢? 有時你可以簡單地重命名掉它,但如果它位于autoload/或別的名字相關(guān)的文件夾中呢? 你改掉文件名,就等于改掉插件。這一點也不好玩。

人們總結(jié)出一系列hacks來讓事情變得簡單些,比如Vimball。 幸運的是,我們不再需要忍受這些骯臟的hacks。?Tim Pope創(chuàng)造了著名的Pathogen插件讓管理大量插件變得輕松愉快, 只要插件作者神志清醒地安排好插件結(jié)構(gòu)。(譯注:現(xiàn)在推薦vundle來代替Pathogen,前者支持使用git下載插件)

讓我們了解一下Pathogen的工作方式,以及為了讓我們的插件更加兼容,我們需要做的事。

運行時路徑

當Vim在特殊的文件夾,比如syntax/,中查找文件時,它不僅僅只到單一的地方上查找。 就像Linux/Unix/BSD系統(tǒng)上的PATH,Vim設置runtimepath以便查找要加載的文件。

在你的桌面創(chuàng)建colors文件夾。在這個文件夾中創(chuàng)建一個叫mycolor.vim的文件(在本示例中你可以讓它空著)。 打開Vim并執(zhí)行這個命令:

:color mycolor

Vim將顯示一個錯誤,因為它不懂得去你的桌面查找?,F(xiàn)在執(zhí)行這個命令:

:set runtimepath=/Users/sjl/Desktop

當然,你得根據(jù)你的情況修改路徑名?,F(xiàn)在再嘗試color命令:

:color mycolor

這次Vim找到了mycolor.vim,所以它將不再報錯。由于文件是空的,它事實上什么都沒, 但由于它不再報錯,我們確信它找到了。

Pathogen

Pathogen插件在你加載Vim的時候自動地把路徑加到你的runtimepath中。 所有在~/.vim/bundle/下的文件夾將逐個加入到runtimepath。(譯注:vundle也是這么做的)

這意味著每個bundle/下的文件夾應該包括部分或全部的標準的Vim插件文件夾,比如colors/syntax/。 現(xiàn)在Vim可以從每個文件夾中加載文件,而且每個插件文件都獨立于自己的文件夾中。

這么一來更新插件就輕松多了。你只需要整個移除舊的插件文件夾,并迎來新的版本。 如果你通過版本控制來管理~/.vim文件夾(你應該這么做), 你可以使用Mercurial的subrepo或Git的submodule功能來直接簽出(checkout)每個插件的代碼庫, 然后用一個簡單的hg pull; hg updategit pull origin master來更新。

成為Pathogen兼容的

我們計劃讓我們的用戶通過Pathogen安裝我們寫的Potion插件。 我們需要做的:在插件的代碼庫里,放置我們的文件到正確的文件夾中。就是這么簡單!

我們插件的代碼庫展開后看起來就像這樣:

potion/
    README
    LICENSE
    doc/
        potion.txt
    ftdetect/
        potion.vim
    ftplugin/
        potion.vim
    syntax/
        potion.vim
    ... etc ...

我們把它放置在GitHub或Bitbucket上,這樣用戶就能簡單地clone它到bundle/,一切順利!

練習

如果你還沒有安裝[vnudle][],安裝它。(譯注:原文是安裝Pathogen,但是沒有必要啦)

給你的插件創(chuàng)建Mercurial或Git代碼庫,起名叫potion。 你可以把它放到你喜歡的地方,并鏈接到~/.vim/bundle/potion/或就把它直接放到~/.vim/bindle/potion/。

在代碼庫中創(chuàng)建READMELICENSE文件,然后commit。

Push到Bitbucket或GitHub。

閱讀:help runtimepath。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號