PythonでVim scriptの関数を定義する
Vim Advent Calendar 18日目!
こんにちは!Vim Advent Calendar 18日目担当のtsukkeeです。以前にも、vim-users.jpにて、Hack #132: Pythonインタフェースを使う(1)とHack #136: Pythonインタフェースを使う(2)を書かせていただきましたが、今回はさらに面白い?Pythonインタフェースの使い方を紹介したいと思います。
Pythonインタフェース内でVim scriptの関数を定義する
いきなりですが、vim_bridgeというものが既にあります。これに気づかず再発明してしまったのですが、自分が作ったものの方が自由に関数名を決めれるのでまぁいいことにします^^; サンプルコードは以下のとおりです。
PythonのデコレータでPythonの関数をVim scriptの関数に変換するところはvim_bridgeと同じですが、今回はデコレータの引数で関数名を指定できるようにしてみました。これによってs:fuga()のようなスクリプトローカスな関数や、例にはありませんが、hoge#fuga#piyo()のようなaudoload関数も定義可能です。
まとめ
PythonインタフェースはVimによってあったりなかったりするために、あまり広くは使われていません。また、はじめはPythonインタフェースを用いて実装していたものを、ピュアVim scriptにする人もいます。ですが、私はあえてPythonインタフェースを使うことも推奨したいです。逆にVim scriptゼロでVimプラグインを実装するというのも面白いのではないでしょうか?というわけで、18日目終わります!
2011/12/18 00:00 | Vim | トラックバック(0) | コメント(3)