インストール方法については “doc/code-snippet.jax” を参照してください。
VimでScribesみたいな入力補完ができたらいいな、と思って作ったら、既にsnippetsEmuなるものがありました。でもこっちのが簡潔でいいもんね。
テンプレートの展開はVimの短縮入力機能にたよっています。このプラグインは、文字列式を受け取って “:iabbrev” コマンドに渡すラッパコマンドを用意しているだけです。その他に、前方、後方のプレースホルダに移動するマッピングと、プレースホルダを置き換えるマッピングを用意しています。プレースホルダにはデフォルトの文字列を指定できます。
たとえば、ファイル形式別プラグインのディレクトリに以下のような “c_snippet.vim” を用意します。
" C のためのテンプレート
" simple-snippet.vimが読み込まれていなければ実行しない
if exists(':StringAbbrLocal') != 2
finish
end
StringAbbrLocal while() "while([~cond~]) {\n[~~]\n}"
StringAbbrLocal fgets() "fgets([~buf~]; [~bufsize~]; [~fp:stdin~])[~~]"
Cファイルを編集中に “while()” と打って Shift-Return を押すと、
int
main(void)
{
/* ここから下が展開された部分 */
while([~cond~]) {
[~~]
}
/* 以上 */
return 0;
}
以上のように展開されて、 “[~cond~]” の部分が選択されます。Return を押すと削除されて挿入モードに入ります。もう一度 Shift-Return を押すと、 “[~~]” の部分が、今度は選択されるのではなく単に削除されて挿入モードに入ります。
次に “fgets()” と打って Shift-Return を押すと、
fgets([~buf~], [~bufsize~], [~fp:stdin~])[~~]
のように展開されて “[~buf~]” が選択されます。もう二度 Shift-Return を押すと “[~fp:stdin~]” が選択されます。ここで Return を押すと、 “stdin” がデフォルトの文字列として挿入されます。デフォルト文字列を消すためには Ctrl-U を押してください (これはVim標準のコマンドです) 。
基本はこれだけです。詳しくは付属のヘルプファイルを参照してください。