ビットの海

ゆるふわソフトウェアエンジニアしゃぜのブログ

neovim で vim-test から pytest を実行する

久しぶりにvimの話。 こんな感じでneovimで、vim-testからpytestを実行します。

f:id:shase428:20210218000200p:plain

pluginと設定

今回は2つのpluginを使用します。

name description
vim-test/vim-test 汎用テストRunner。様々なテストツールに対応。
kassio/neoterm neovim向けの高機能terminal

自分は dein の tomlでplugin管理をしているので以下のような感じで追記します。

  [[plugins]]
  repo = 'kassio/neoterm'

  [[plugins]]
  repo = 'janko-m/vim-test'
  depends = ['neoterm']
  hook_add = '''
    let g:neoterm_default_mod='belowright'
    let g:neoterm_size=10
    let g:neoterm_autoscroll=1
    let g:neoterm_shell = '$SHELL -l'
 
    let g:test#strategy = 'neoterm'
    let g:test#preserve_screen = 1
    let g:test#python#runner = 'pytest'
    let g:test#python#pytest#executable = g:project_pytest
  '''

少しだけ解説すると

let g:test#strategy = 'neoterm'

^ vim-testのstrategyとしてneotermを指定しています(ほかにもいろんなツールに対応しています)

let g:test#python#runner = 'pytest'

^ この部分でtask runnerを指定しています。

let g:test#python#pytest#executable = g:project_pytest

^ この部分は g:project_pytest をinit.vimのほうで定義していて、実際にprojectで使うpathのpytest(venv/binのpytest)を指定しています。

これらを設定した状態で、vim-testのコマンド( :TestFile など)を実行すると、neotermが立ち上がり、pytestが実行されるようになります。

キー周りのカスタマイズはおいおい...。