[vim][python] vim を python で拡張し,anything-like なインターフイスで実行する。

Vim のコマンドは沢山あってたまにしか使わないものは覚えられない。
特定の時期に頻繁に使って、専用のキーバインドを設定しても、暫く使わないとそんなキーバインドを設定した事すら忘れてしまう。
というのに困ってる人は俺だけではないはずだ。

Emacs はそれぞれの機能が emacs-lisp の関数として実装されていて、わりと分かりやすい名前がついている。
anything という超強力なプラグインのおかげで、大量にある elisp の関数をあいまい検索して実行できるようになったから、これによって「うろ覚え」でも関数を呼べるようになった。
つまり、覚えなくてもよくなったって事。

こういうのが Vim にもあれば便利だ。
実際にいくつかプラグインがあり、fuzzyfinder, ku, unite がある。どれも日本人が作ってるってのがすごい!
unite はまさに Vim 版 anythong を志向しているようで、おそらく決定版になるだろうと思う。
俺も先週ぐらいから unite を使っていて、もうちょっとしたら fuzzyfinder は使わなくてすむようになると思う。


ああ、前置きが長くなってしまった。
本題。
python のお勉強をしている。
pythonVim を気軽に拡張したい。
つくった python の関数を anything like なインターフェイスで、ランチャのように起動したい。
と妄想して、それっぽいものを作った。
なんせ、python の初心者(先週の水曜ぐらいからか始めた)なのと、まだ module , class, 変数の scope とかもちゃんとわかってないレベル
で書いてるので、とりあえずでっち上げたというレベルですが。。バグバグですが、アイデア共有ってことで。

vimrc に

nnoremap <D-f><D-p> :python vim_py()<CR>
vnoremap <D-f><D-p> :python vim_py()<CR>
pyfile "~/.vim/plugin/pyvim_anything_like.py"

みたいに設定して、 で呼び出し、候補を絞り込んで実行。という流れ。
python の docstring がそのままランチャの help なる。
インターフェイスは CommandT をかなりパクって作ってます。

画面はこんな感じ