Vimscript 新希望:用Pathogen配置插件

2018-02-24 16:02 更新

Vim的插件配置方式,在你僅僅添加一個(gè)文件來自定義自己的Vim體驗(yàn)時(shí)很合理, 但當(dāng)你想要使用別人寫的插件時(shí),這種方式會(huì)導(dǎo)致一團(tuán)糟。

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

在這個(gè)過程中有些明顯的問題:

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

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

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

運(yùn)行時(shí)路徑

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

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

:color mycolor

Vim將顯示一個(gè)錯(cuò)誤,因?yàn)樗欢萌ツ愕淖烂娌檎摇,F(xiàn)在執(zhí)行這個(gè)命令:

:set runtimepath=/Users/sjl/Desktop

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

:color mycolor

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

Pathogen

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

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

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

成為Pathogen兼容的

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

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

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

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

練習(xí)

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

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

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

Push到Bitbucket或GitHub。

閱讀:help runtimepath。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)