LoginSignup
4
1

More than 5 years have passed since last update.

vim-rspec で Vim 上で RSpec を楽に実行する

Last updated at Posted at 2019-04-13

はじめに

Vim で Rails でのアプリ開発をしているときに、RSpec でモデルのテストを回す、というようなケースがあると思います。

今までは tmux で別ペインにターミナルを立てて、該当の spec を直接コマンド実行していたのですが、なかなか面倒でした。

そんな中、vim-rspec という Vim プラグインが非常に便利だったので、紹介します。

vim-rspec とは

vim-rspec とは、Vim 上で動作する軽量の RSpec ランナーです。

よく使うキーマップを設定しておくことで、Vim 上で Rspec を実行することが出来ます。

使い方

インストール

まず、vim-rspec をインストールします。(以下は dein.vim でのインストール例です)

.vimrc
call dein#add('thoughtbot/vim-rspec')

キーマップ設定

次に、それぞれの関数を実行するキーマップを設定します。

.vimrc
" RSpec.vim mappings
map <Leader>t :call RunCurrentSpecFile()<CR>
map <Leader>s :call RunNearestSpec()<CR>
map <Leader>l :call RunLastSpec()<CR>
map <Leader>a :call RunAllSpecs()<CR>

それぞれの関数の概要は以下の通りです。

関数 概要
RunCurrentSpecFile() 現在開いている spec ファイル全体を実行
RunNearestSpec() 現在開いている spec ファイルのカーソルに一番近いブロックの spec を実行
RunLastSpec() 前回実行した spec を実行
RunAllSpecs() プロジェクトのすべての spec を実行

実行コマンド設定

次に、実際に実行するコマンドを設定します。

.vimrc
let g:rspec_command = "!bin/rspec {spec}"

{spec} 内に実際に実行する spec ファイル名が入ります。外部コマンドを実行するので、最初に!をつけます。

僕の場合は、spring-commands-rspecを使っていたので、bin/rspecとしています。

実行

上記設定後、編集中の spec ファイル上で例えば <Leader>t実行すると、その RSpec ファイルを実行し、Quickfix ウインドウ上で結果を表示してくれます。

vim-dispatch で更に便利に

tmux などの仮想ターミナルを使っている方は、vim-dispatch と組み合わせると更に便利かもしれません。

vim-dispatch は tmux、screen、iTerm、Windows などの仮想ターミナル上で、非同期にテストやコンパイルを実行できるプラグインです。

利用イメージは作者の動画を見るのがわかりやすいです。

使い方としては、まずvim-dispatch をインストールし、

.vimrc
call dein#add('tpope/vim-dispatch')

rspec を以下のように修正するだけで OK です。

.vimrc
let g:rspec_command = "Dispatch bin/rspec {spec}"

この設定で RSpec を実行すると、tmux であれば別ペインを開き、非同期で spec を実行してくれます。実行中も Vim 上で操作ができるので便利です。

おわりに

こちらで 開発中何度も RSpec を実行するのが非常に楽になりました。よかったら試してみてください。
他の使い方は vim-rspec の READMEを読むと良いと思います。

参考

4
1
0

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
4
1