vim-users.jp

Hack #176: RSpecをquickrunする (2/2)

Posted at 2010/10/12
このエントリーをはてなブックマークに追加

Hack #176: RSpecをquickrunする (1/2)では、RSpecをVimで走らせるためにはquickrunを用いるのが最適であること、そしてその使い方を説明しました。 本Hackではこれをさらに便利に使いやすくするための発展的な話題を提供します。

カーソル行のケースのみをRSpecする

前回紹介した~/.vimrcの設定

let g:quickrun_config['ruby.rspec'] = {'command': 'spec'}

これは、'filetype'ruby.rspecであるようなファイルのバッファに対して、それを一旦ファイルに保存したものを

$ spec {the file}

として呼び出すのとほぼ同じとみなせます。ところでRSpecのspecコマンドには特定のケースのみを実行させるためのオプションがいくつかあります。たしえば-lオプションは、行番号を指定することで、その行を含むケースのみを実行させます。

$ spec -l 125 {the file}

こうすることで125行目を含むケースのみを実行します。このオプションはVimのためだけに用意されているといっても過言ではないでしょう。

quickrunの設定のcommand欄には任意のVim scriptを記述することができます。カーソル位置の行番号はline('.')で指定できますので、

let g:quickrun_config['ruby.rspec'] = {'command': "spec -l {line('.')}"}

とすることでカーソル行のケースのみをquickrunでRSpecすることができます。

figure 1

例えば上記specファイル全体をRSpecしますと3行目でfailするはずですが、7行目だけを実行した結果をquickrun outputに出力しているためのfailureが見られないことがわかります。

じわじわ出力する

quickrunは非同期で実行できるとはいえ、計算が終了するまで:-)のままquickrun outputは変化せず、計算が終了した時点ですべての出力を同時に表示します。 RSpecの実行に時間がかかるとき、specの実行結果を少しずつ出力して作業の合間に確認したいという方も多くいらっしゃることだと思います。

解決策として、例えばquickrunを避けるということが挙げられます。

vimshell:VimShellExecuteを用います。まず編集中のspecファイルを保存し、以下のコマンドを呼び出します。

:VimShellExecute spec {the file name}

注意: filename-modifiersの%は使えません。

参考

ujihisa

もどる
blog comments powered by Disqus