バッファ内の定義に簡単に飛べるXRubyJumpというvimプラグインを書いた
タグ: rubyvimrubyjump / 初版公開: 2014-05-02

2014/5/11追記: XRubyJumpはRubyJumpとなった。このページの情報は古いので参考にしないこと。

デモ

xrubyjump.vim demo

概要

Rubyスクリプトの編集中に、バッファ内のメソッド、モジュール、クラスの定義に簡単に飛べるプラグイン。

インストール

ワンファイルなので~/.vim/plubinxrubyjump.vimをコピーするだけで使える。

またはVundleで以下を~/.vimrcに書いて、:BundleInstallを実行する。

Bundle 'xmisao/xrubyjump.vim'

使い方

*.rbなファイルを開いて:XRubuJumpを実行する。 そうするとバッファの上に1行の候補選択ウィンドウが開く。 候補選択ウィンドウ内では補完が効く。 候補選択ウィンドウに飛びたい定義の名前を入力してEnterを押下すると定義に飛ぶことができる。

実用的には好きなキーに以下のようにマップを定義するのがおすすめ。

autocmd BufNewFile,BufRead *.rb nmap ; :XRubyJump<CR>

残念なところ

  • 飛べるのは:XRubyJumpを実行したバッファ内の定義のみ。
  • 同名の定義が複数ある場合、どこに飛ぶかは未定義。
  • 構文解釈がしょぼいのでコメントアウトされた定義にも飛んでしまう。

感想

はじめてvimプラグインを作ることを思い立ったのですべてが手探りだった。 vimスクリプトの文法がほぼほぼわからない。 まず1行のウィンドウを出す方法がわからない。 補完の候補を出す方法がわからない。 候補を選択して目的の場所に飛ばす方法がわからない。 そんな所からはじめた。

参考にFuzzyFinderなど有名どころのプラグインのソースもチラ見してみたが、vimスクリプト初心者が読むにはあまりにも難解であきらめてしまった。 結果として、この実装で正しいのか? という箇所がたくさん残ってしまったが、それでもひとまず公開してみるのが吉と考えて、思い切って公開した。

まだ至らないところが多いが、自分ではそれなりに便利に使えている。 今後もvimスクリプトの勉強を兼ねてアップデートしていくようにしたい。