unite-mark 作った
vim 史上最も熱い冬をみなさんはどのようにして過ごしていますか? そうですね、熱さの発生源である unite.vim の source 作りに励んでいますよね。
vimscript はよくわからないのですが面白そうだったので unite の source として vim の mark を扱う unite-mark を作成しました。
unite-mark
vim の mark を unite で扱います。
:Unite mark
とすればカレントバッファにある mark 一覧が表示されます。選択して
すれば mark のある行までジャンプします。
デフォルトで列挙される mark はこれらの mark を列挙したい場合は .vimrc で
指定方法が変わりました。以下のように表示したい mark を直接指定します。
[a-z]だけです。
[A-Z0-9]や
>{}[]()などは列挙しません。
g:unite_source_mark_showall = 1としておく必要があります。このオプションはデフォルトでは 0 になっています。
g:unite_source_mark_marks = 'abcABC012'このオプションのデフォルト値は
'abcdefghijklmnopqrstuvwxyz'です。tyru さんありがとうございました。
作ってみた感想
vimscript がよくわからんというどうしようもない点を除けば unite の source を作るのは簡単でした。もっとも今回はすごくシンプルな内容だったわけですが。
実装に関する不満
具体的なコードの話でいえば、カレントバッファの mark を取得するために
execute 'buffer #'でバッファを切り替えてからループを回して終わったら unite バッファに戻るために再度
execute 'buffer #'とやっているあたりがださい。もうちょっとなんとかできないのかと思う。何か方法があるのかもしれないけれど思いつけない程度の知識しかないのが悔やまれる。vimscript を勉強しようと思った。あと、そもそも mark の内容を取得する方法自体よくわからなかった。
:marksに対応するような function があるかと思って探したけど無かった。残念だった。
まとめ
unite.vim すごい! vimscript わからん!