74
75

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tmuxとvim-rspecとvim-dispatchで快適なRSpec生活

Last updated at Posted at 2013-07-05

tmuxと

この2つを組み合わせて使うとvimからRSpecで書いたexampleを実行するのが超楽になります

とりあえず新しいプラグインを見つけた時に一番最初に気になる**「NANIができんねん!??!?!?!」**

というのは言葉ではなく実際に見てみないとわからないのでgifを貼ります

といった具合に

  • RSpecをvimから実行出来る
  • 実行処理は™uxの別paneが自動的に開いてそこで
  • 実行後vimのquickfixで結果を表示

してくれます。個人的には痒いところに手が届く感じがしてすごいいいです。

もちろんカーソルから一番近いexample1個だけを実行も出来ます

何が起こったかの流れ

vim-rspecを入れることによって実行できる

:call RunCurrentSpecFile()
:call RunNearestSpec()
:call RunLastSpec()
:call RunAllSpecs()

のコマンドの内どれかを実行

vim-rspec側の設定でvim-dispatchを入れることによって入るDispatchコマンドにrspecコマンドを渡して実行

vim-dispatchはtmuxが起動してると自動的に別paneを開いて実行してくれる

vim-dispatchが実行結果をquickfix上で表示してくれる

といった感じになります。

設定方法

インストール

NeoBundle 'tpope/vim-dispatch'
NeoBundle 'thoughtbot/vim-rspec'

僕のように遅延ロードして少しでもvim起動を速くしたい人は

NeoBundleLazy 'thoughtbot/vim-rspec', {
                \ 'depends'  : 'tpope/vim-dispatch',
                \ 'autoload' : { 'filetypes' : ['ruby'] }
              \ }

設定

let g:rspec_command = "Dispatch rspec {spec}"

とすることによってvim-rspecによって入るコマンドを叩いたらrspecコマンドをDispatchコマンドに渡して実行できます。

NeoBundleLazyを使用してる方は

let s:bundle = neobundle#get('vim-rspec')
function! s:bundle.hooks.on_source(bundle)
   let g:rspec_command = 'Dispatch rspec {spec}'
endfunction

になります。

ちなみに僕はRSpec 1.Xを使用してるプロジェクトもあるので

let s:bundle = neobundle#get('vim-rspec')
function! s:bundle.hooks.on_source(bundle)
  if executable('rspec')
    let g:rspec_command = 'Dispatch rspec {spec}'
  elseif executable('spec')
    let g:rspec_command = 'Dispatch spec {spec}'
  endif
endfunction

としてます。

おまけ

zeusも使ってる人は

let g:rspec_command = "Dispatch zeus rspec {spec}"

とすればzeusの恩恵ももちろん受けれます、便利!

キーバインド

僕は以下のように設定してます

nmap <silent><leader>c :call RunCurrentSpecFile()<CR>
nmap <silent><leader>n :call RunNearestSpec()<CR>
nmap <silent><leader>l :call RunLastSpec()<CR>
nmap <silent><leader>a :call RunAllSpecs()<CR>

まとめ

guardも使用してるんですが、guardでは個別のexampleを実行するいい方法が見つからず、この方法に行き着きました。

vim-dispatchはvim-rspecと組み合わせて使う以外にも色々と便利な使い道があるので一度READMEをみてみるといいかもしれません

74
75
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
74
75

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?