template.vim 書いた

template.vim と言う車輪を再発明した。そう、vim ではありがちな「新しいファイルを編集する際にテンプレートを読み込む」プラグイン。名前が適当すぎるのは仕様。
意外な事に、全く同名のスクリプトが www.vim.org に見当たらなかったのでこの名前にした。もちろん考えるのが面倒だったのが1番の理由。ものすごく似た名前ならあったけど気にしてはいけない。

テンプレートエンジンってのは相当な種類出回っていて、短いのになると 1 行で書ける*1。ではなんで今更作ったのかと言うと、ざっと見渡してみて自分好みのものが見当たらなかったから。それだけです。
テンプレートエンジンの自作は vim ユーザが必ず一度は通る道だよね!


GitHub - thinca/vim-template: Simple and flexible template engine.


実は書いたのは結構前なんだけど、ヘルプ書くのが面倒で公開してなかった。頑張って書いたので詳細はヘルプ見て下さい。
ヘルプ

で、他のテンプレートエンジンとどう違うの?

とにかく、なんとなくそれっぽい場所にテンプレートを置いておけばそれっぽい時に読み込まれるようなのが欲しかった。
以下、ヘルプから抜粋。

以下のようにファイルが配置されているとすると:

 ~/.vim/template
 |-- doc
 | `-- template.txt
 |-- plugin
 | `-- template.vim
 |-- template.java
 |-- template.rb
 |-- template.vim
 |-- template_spec.rb
 `-- templateTest.java

以下のようにテンプレートが読み込まれます。

開くファイル        読み込まれるテンプレート
------------        ------------------------
foo.vim             template.vim
plugin/foo.vim      plugin/template.vim
Foo.java            template.java
FooTest.java        templateTest.java
foo.rb              template.rb
foo_spec.rb         template_spec.rb
foo.txt             (なし)
doc/foo.txt         doc/template.txt

これを見て何となく察して。

キーワード置換について

キーワード置換をしてくれるテンプレートエンジンも結構あるけど、私はあれがキライだ。
まず覚えなくちゃいけない。どんなキーワードが使えたっけ、とか考えるの面倒。
柔軟性もない。特殊な事をやろうとするとどうしても無理が出てくる。

なので、 template.vim にはそんな機能は付いていない。代わりに任意のコマンドを実行できるようになっている。
例えば、またヘルプから抜粋すると、

autocmd User plugin-template-loaded silent! :%!erb

vimrcにこう書いておくとテンプレートは開かれた直後に erb によってフィルタされる。これで何をするかは使う人次第。

まとめ

もし気に入ってくれたら使ってくれると嬉しいです。
ちなみにプラグイン本体よりヘルプの方が行数多いとか割とよくある話。

*1::help skeleton