Vimでref.vimを使ってRubyのリファレンスをただちに検索する

Vimで書いたコードを速攻実行できるquickrunプラグインがホッテントリで話題になってて、自分もこのプラグインを愛用させてもらってるんだけど、同じ作者さんのref.vimプラグインもコーディングするときにquickrunと同様に超絶便利なのでおすすめ。このプラグインは、Vim上からリファレンスやドキュメントをただちに検索できるプラグイン。調べたいクラス名やメソッド名にカーソルを当ててShift+Kを押すだけ。こちらもquickrunと同様に様々な言語やドキュメントをカバーしている。

今回はRubyリファレンスの導入手順

今回はRubyのリファレンス検索ツールrefe2をref.vimから使うためのrefe2導入手順。MacとWindowsそれぞれの場合を書いてみた。どちらもRubyのバージョンは1.8.7。ちなみに自分の場合、Ruby以外にもPHPと英辞郎で英単語を検索できるalcでこのref.vimを使用してる。これらはホント便利。作者さんに感謝。

refe2導入前にVim側ではそのref.vimが使用可能な状態になっていることが前提。基本的には他のVimプラグインと同じようにインストールするだけ。ref.vimはインストール後の各リファレンスのセッティングのほうが重要で、そのなかでもRubyのrefe2の設定は難しい部類だと感じた。ref.vimのインストールとPHPリファレンスの設定についてはこちらの記事が詳しい。

Macの場合

  • ここから最新のRubyリファレンスruby-refm-1.9.2-dynamic-20110329.zipをダウンロード
  • 解凍して~/Documents/Reference/rubyrefm/(場所は任意)に配置
  • 以下の内容のrefeファイルを作成し、実行権限chmod u+x refeを与えて、パスの通った所(例: /bin/)に配置する
#!/bin/sh
exec ruby -Ke -I ~/Documents/Reference/rubyrefm/bitclust/lib ~/Documents/Reference/rubyrefm/bitclust/bin/refe.rb -d ~/Documents/Reference/rubyrefm/db-1_8_7 "$@"
  • ターミナルでwhich referefe --versionを実行して準備できていることを確認する
$ which refe
/Users/ruedap/bin/refe
$ refe --version
ReFe version 2
  • ターミナルでrefe Array shuffle1でちゃんとリファレンスが表示されることを確認する
$ refe Array shuffle
Array#shuffle
        - shuffle -> Array
配列の要素をシャッフルして,その結果を配列として返します。
srand()が有効です。
例:
   a = [ 1, 2, 3 ]           #=> [1, 2, 3]
   a.shuffle                 #=> [2, 3, 1]
  • Vimのコマンドラインモードで:Ref refe Array shuffleを実行して、上のターミナルの時と同じ内容が表示されることを確認してセットアップ完了!
  • ref.vimなら、VimでRubyコードを開いて、調べたいメソッド名などの上でShift+Kを押せばオッケー。

Windowsの場合

  • ここから最新のRubyリファレンスruby-refm-1.9.2-dynamic-20110329.zipをダウンロード
  • 解凍してD:\Documents\Reference\rubyrefm\(場所は任意)に配置
  • D:\Documents\Reference\rubyrefm\refe-1_8_7.cmdを複製しrefe-1_8_7-utf.cmdを作成。以下のようにファイルの文字コードをUTF-8に書き換えるようにする
    • 注意: このrefe-1_8_7.cmdを配置するディレクトリのパスにスペースが入っていると、次のrefe.batの指定時にダブルクォーテーションでくくってもエラーになると、はてブコメントでid:holyppさんに教えてもらった感謝!
@echo off
pushd "%~dp0"
ruby -Ke -I bitclust/lib bitclust/bin/refe.rb -d db-1_8_7 -e utf8 %*
popd
  • 以下の内容のrefe.batファイルを作成し、パスの通った所(例: C:\Ruby187\bin)に配置する
@echo off
D:\Documents\Reference\rubyrefm\refe-1_8_7-utf.cmd  %*
  • コマンドプロンプトでrefe --versionReFe version 2と表示されれば準備オッケー
  • コマンドプロンプトでrefe Array shuffleすると文字化けした情報が表示されるがこれでおk2
  • Vimのコマンドラインモードで:Ref refe Array shuffle3を実行して、リファレンスマニュアルが正常に表示されることを確認してセットアップ完了!
  • ref.vimなら、VimでRubyコードを開いて、調べたいメソッド名などの上でShift+Kを押せばオッケー。

.vimrc

上述のようにセットアップが完了すれば、クラス名やメソッド名にカーソルが乗っている状態でShift+Kを押したり、コマンドラインモードから:Ref refe Array shuffleのように入力すれば、ただちにリファレンスを検索できるようになる。ショートカットキーを割り当てればもっと早く検索できるので、自分の場合の.vimrcでのref.vimの設定を参考までに。

""" ref.vim
let g:ref_use_vimproc = 0   " vimprocをインストールしてない場合は0を指定
nmap ,rr :<C-u>Ref refe<Space>

この設定の場合だと、ノーマルモードで,rr Array shuffleまたは,rr shuffleとすれば、今までの例と同じようにArray#shuffleを検索できる。


ref.vim 書いた - 永遠に未完成 ref.vim の内部構造を大幅に書き換えた - 永遠に未完成 ref.vim を入れる - Heavens hell るりまプロジェクト - ReleasePackageHowTo - Ruby Issue Tracking System

  1. 調べるメソッド名は何でも良いけど、古いrefeではないことを確認するために、1.8.7で追加されたメソッド名を検索している

  2. 上記でアウトプットのエンコーディングをUTF-8にしたため。Shift-JISにすればコマンドプロンプトではちゃんと表示されるが、Vimでは文字化けするので、Vimを優先してUTF-8を選択

  3. 調べるメソッド名は何でも良いけど、古いrefeではないことを確認するために、1.8.7で追加されたメソッド名を検索している