sniplateは, ファイルの編集中に, コード断片を読み込む為のプラグインである.
既存のプラグインに比べ, 関数程度の大きさのコードを扱いやすく, 依存関係の処理, 多重読み込みの防止等の機能がある.
プラグイン管理プラグインを使っている場合は,
NeoBundle 'MiSawa/sniplate.vim'
等とし, :NeoBundleInstall する. そうでない場合は, ~/.vim/ 又は $HOME/vimfiles/ 等に, ダウンロードしたファイルを展開する.
詳しくは, help sniplate を参照.
また, Vim Advent Calendar 2012 の この記事 にも説明がある.
例として, C++で関数 sum と average をスニペット化する場合,
//BEGIN SNIPLATE sum
//{{pattern: int sum(vector<int> in)}}
//{{class: statistics}}
int sum(vector<int> in) {
int res = 0;
for(int i = 0; i < in.size(); ++i)
res += in[i];
return res;
}
//END SNIPLATE
//BEGIN SNIPLATE average
//{{pattern: double average(vector<int> in)}}
//{{require: sum}}
//{{class: statistics}}
double average(vector<int> in) {
return (double)sum(in) / in.size();
}
//END SNIPLATE
等とする.
ここで, :SniplateLoad average を行うと, バッファに int sum(vector<int> in) とマッチする部分が無い場合, sum も一緒に挿入される.
また, unite.vim のソースもあり, 例えば :Unite sniplate:statistics とすると, {{class: statistics}} の記述があるスニペットを表示し, 選択/挿入出来る.
他に, cursor, eval, exec 等, 様々なキーワードの埋め込みが可能である.