ちなみに

火曜日の空は僕を押しつぶした。

vimからRefeをひく

refe.vim導入しました。以下記録。

Refeの導入

RubyGemsからインストールします。

# sudo gem install refe

しかしこのままだとUTF-8を使っているとで化けるので修正します。

refeのutf-8化 - 適当日記 - 断片部を参考にしつつもすでにrequireしてるNKFを使います。

/Library/Ruby/Gems/1.8/gems/refe-0.8.0.3/lib/refe/searcher.rb

def adjust_encoding( str )
  if shift_jis_platform?
    NKF.nkf('-Es', str)
  else
    # str
    NKF.nkf('-Ew', str) # <=追加
  end
end

これでUTF-8でも日本語表示できるようになりました。

refe.vimの導入

id:secondlifeさんの便利なプラグイン。vim上でさくさくひけます。
vim で Ruby のリファレンスマニュアルをさくさく検索する - refe.vim - 川o・-・)<2nd life

ダウンロード後、以下のように導入します。

# vim -c 'so %' refe.vba

これで動くには動くのですが、個々のレファレンスに飛ぼうとするとエラーで落ちます。どうもvimにpatch.111を当てないとshellescape関数が使えないためパッチの当たってない僕の環境では動かなかったようです。
幸い、この問題はid:secondlifeさん自身によって解決されていました。
vimscript で shellescape - #生存戦略 、それは - subtech
差し替えたと書かれてますが、差し変わってないようですので直接修正します。

(vimのプラグインフォルダ)/refe.vim

" s:shellescape関数の追加
function! s:shellescape(arg)
  return "'" . substitute(a:arg, "'", "'\\\\''", 'g') . "'"
endfunction
" ここまで

function! s:RefeArgEscape(arg)
  let arg = a:arg
  if match(arg, "^'") == -1
    let args = split(arg, '\s')
    let arg = ''
    for ar in args
      " 修正 shellescape(ar) => s:shellescape
      let arg .= s:shellescape(ar) . ' '
    endfor
  endif
  return arg
endfunction

Windows環境用の修正は必要ないので抜きました。必要な方はリンク先を参照してください。

設定

自分用に設定します。

.vimrc

" for refe.vim
let g:loaded_lookupfile = 0
let g:RefeUseLookupFile = 0

au BufRead *rb nmap <buffer> K :Refe <cword><CR>

lookupfile.vimは使ってないので使わないようにして、Shift+K*1でカーソル下の単語をRefeでひけるようにしてます。

使う

:h refe

"あとで書く"が並んでいましたorz
基本は:Refe (調べたいメソッド名など)でいけます。引数なしで呼ぶとメニューが出るので、選んでから"o"で開いて、戻るときは"B"、クラスやモジュールは"-"で。
.vimrcで設定してるのでShift-Kで、カーソル下の単語をひくことも出来ます。

便利!そしてid:secondlifeさんに感謝!

追記

どうやらvbaファイルがロールバックしちゃってたみたいです。
secondlifeさんが速攻で差し替えてくださったので、そちらを使わせていただきましょう。
マニュアルも完璧なものなのでこのエントリーなんか読まずに:h refeで。

*1:通常はmanでひきます。