VimのQuickFixとRubyのスタックトレース

ファイルに書き出したスタックトレースをVimのQuickFixに食わせるとファイルオープンがめちゃくちゃ楽になるという話です。
http://vim-jp.org/vimdoc-ja/quickfix.html

下記みたいなコードを、読みたいメソッドに書き込んで、何らかでそのメソッドを実行します。
実行後は、 Vimで:cfile /tmp/ruby_caller:cwindowを実行するとQuickFixがファイルへの参照リストを作成してくれているのでファイルオープンが最高に楽になります。

begin
  raise
rescue => e
  File.write("/tmp/ruby_caller", e.backtrace.join("\n")) && raise
end

ということをキーマッピングすればめちゃくちゃ便利。

nnoremap <leader>rw obegin; raise; rescue => e; File.write("/tmp/ruby_caller", e.backtrace.join("\n")) && raise; end<esc>
nnoremap <leader>rr :cfile /tmp/ruby_caller<CR>:cw<esc>
nnoremap <leader>re :e /tmp/ruby_caller<esc>

(callerでもスタックトレースが読めますがraiseした時点 の行が出力されない場合があるのでエラーオブジェクトからスタックトレースを採っている)

下記マッピングもあるとQuickFixが使いやすくなる。

nnoremap <C-p> :cprevious<CR>   " 前へ
nnoremap <C-n> :cnext<CR>       " 次へ

糸冬