VimのターミナルでRSpecを実行したかったので実装してみました
(DB設定をしていないのでエラー吐いてます)
実装
kassio/neotermというVim/Neovimのターミナル機能のラッパーを使うと簡単に実装できました
neoterm#do()
関数に実行したいコマンドを引数として渡すことで、ターミナルでコマンドを実行することができます
let g:neoterm_rspec_cmd='bin/rspec'
function! termrspec#file() abort
let l:filename = expand('%') " ファイルのパス取得
call neoterm#do({ 'cmd': join([g:neoterm_rspec_cmd, l:filename]) })
endfunction
実装したコマンドはプラグインにして公開しています
ujiprog/neoterm-rspec.vim
プラグインの使い方
インストール
お使いのプラグインマネージャーにkassio/neotermとuji/neoterm-rspec.vimを追記してください
[[plugins]]
repo = 'kassio/neoterm'
[[plugins]]
repo = 'uji/neoterm-rspec.vim'
コマンド
- :TermRSpecAll
プロジェクト全体のRSpec実行
- :TermRSpecFile
開いているファイルのRSpec実行
- :TermRSpecLine
カーソルがある行のRSpec実行
- :TermRspecFailers
--only-failuers
オプションをつけたRSpecの実行
マッピングして使うと便利です
おわりに
ターミナル機能での外部コマンド実行ですが、neotermのおかげでさくっと実装できました
現状Vim/Neovimどちらでも動作するっぽいので良いですね
外部コマンドの実行、実行結果の閲覧をするプラグインを自作する場合は、neotermを使うと簡単そうです
VimでRSpecを実行する別の手段としてはthoughtbot/vim-rspecや、QuickRunでの実行などがあるのでそちらも試してみてください