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