かなりドラフトの状態なので ウソ が含まれているかもしれない。
ピュア Vim script で書かれた、便利なライブラリ集
.vimrc
の中で気軽に使ったり、プラグイン作成者がライブラリとして利用する。
機能毎にモジュール化されており、自分が使用するモジュールの取り込んで利用することが可能。
複数のプラグイン開発者が同じような処理を各自で作る手間が省けて便利。
.vimrc の中でも使えるので、.vimrc の記述が楽になるかもしれません。
依存で面倒な事の一つは、最新バージョンに追随することです。
vital.vim はある特定時点での vital.vim のバージョンを各プラグインのディレクトリに
丸ごとコピーします。
ですので、最新バージョンの vital に追随して、プラグインを変更する必要性は生じません。
バージョン管理は git の hash 値を使用してこれを'特定の時点での vital のバージョン'を
示すものとして使っています。
vital はあなたが組み込んだ時点での git の hash 値を vital のバージョンとして、その内容が固定されます。
可能です。以下の様にします。
TODO
可能です。アップデートするモジュールを以下の様に指定します。
TODO
短い説明:
vital をプラグインに組み込む。
長い説明:
Vitalize とはプラグインから vital.vim のモジュール(ライブラリ)を使えるように、
その時点での vital のモジュール集を、指定したプラグインのディレクトリにコピーすることです。
vital のモジュール集がプラグインのディレクトリ配下にコピーされたプラグインを vitalize されたプラグインと言います。
使う側にとっては特に vital を意識する必要はありません。
すでにあなたが使用しているプラグインも裏で vital を使っているかもしれません。
- 必要なモジュールのみ取り込む。
- モジュールのアップデート時にはアップデートしたモジュールに関わる部分の動作を確認する。
- プラグイン名を変えた時は vital のどこか変えなきゃいけない?
NeoBundle 'vim-jp/vital.vim'
vital は vital オブジェクト(辞書)を取得して、その辞書関数を使う。
" vital オブジェクトを取得して V にセット
let V = vital#of('vital')
" vital.import({モジュール名}) でモジュール(ジャンル分けされた関数セット)を取得
" して、List という変数にセット
let List = V.import('Data.List')
" List モジュールの uniq 関数を読んで、重複のないエントリを取得。
echo List.uniq([1,2,2,3,3])
" => [1, 2, 3]
上記のように、各モジュールが提供する便利な関数を利用することで、uniq()
を各自が実装する必要がなくなる。
使い方の例と特別な違いはない。
let s:V = vital#of('vital')
let s:List = V.import('Data.List')
thincaさんのujihisa.vimでのプレゼン資料も参考になります
https://gist.github.com/thinca/4006236