2009年11月19日 星期四

VIM::Packager 使用

Vim script 有時候是非常煩人的東西,因為你每次都需要把他們一一複製到你的 VIM Runtime Path 裡頭 (通常為 `~/.vim`):

所以假設現在要安裝 cpan.vim 這個套件,那麼就得這樣做:

# go to libperl.vim page , download the libperl.vim file
# copy libperl.vim to ~/.vim/autoload/

# go to search-window.vim page , download the search-window.vim file
# copy search-window.vim to ~/.vim/autoload/

# download cpan.vim
# copy cpan.vim to ~/.vim/plugin/

# config .vimrc to usage cpan.vim

以上這些都還不是小問題,問題是 vim script 裡頭並不是每個檔案都標記了版本資訊,所以有時候換上了新版的 plugin ,可能導致其他東西爛掉。

另外一種方式是 Vimball , Vimball 的方式相當好,但是並不是每個寫 plugin 的人都懂得如何使用 vimball , 再者 vim.org 並不規定你一定要用 vimball 才可以上傳,而且 Vimball 還是有他侷限的地方。

VIM::Packager 就是幫你做這樣的事情,安裝 cpan.vim 可以相當容易:

$ cd cpan.vim
$ vim-packager build # 讀取 META 檔案 (包含 相依性資訊、套件名稱、版本、Vim 相容版本 ... etc ) 接著產生 Makefile
$ make install # 為你安裝所需要的相依套件,並建立紀錄

若要移除:

$ make uninstall

使用 VIM::Packager 建立 Plugin


步驟相當簡單,先建立作者資訊

$ cat > ~/.vim-author
author: Cornelius
email: cornelius.howl@DELETE.ME.gmail.com
^D

$ mkdir your-plugin.vim
$ cd your-plugin.vim
$ vim-packager init # 這樣會為你產生 META 檔案、以及建立所需要的資料夾,並且利用範本為你建立文件

$ vim META # 編輯套件資訊 (你還可以在 META 裡面加上 =script_id ,script id 對應此套件在 vim.org 的 id ,每當要釋出新版,便可以直接上傳 )

META file 的格式相當簡單,請看:


接著只需要再加上 plugin 的版本資訊即可:

$ vim vimlib/plugin/your-plugin.vim # 加上 『 " Version: 0.1 』 版本資訊
$ vim-packager build # 便會產生 Makefile

$ make dist # 幫你用 tar 打包起來

$ make bump # 提昇版本

$ make upload # 自動上傳到 vim.org

以上三個動作現在可以直接用 $ make release 串起來,也就是:

$ make release # tar 打包、提昇版本、自動上傳一次做到好。


當你在開發的時候,你也可以不需要安裝,可以利用 ln 來幫你直接連結到正在開發的檔案:

$ make link

或是

$ make link-force # 強制連結