「現在開いているファイルに対応するテストファイル」をすぐ開くためのNeovimのキーマップを紹介します。
キーマップ
次のように設定します。
テストファイルを開いている時に「テストされる側のファイル」を開くこともできます。
テストファイルの対応例
しくみとしては、テストファイルがありそうな場所を探し、ファイルが存在すれば開くだけです。
たとえばsrc/a/b/c.ts
に対しては次の場所にテストファイルがないか確認します。
src/a/b/c.test.ts
src/a/b/c.spec.ts
src/a/b/test/c.ts
test/a/b/c.ts
あくまでもファイルのパスから判定しているだけです。そのため、「実際に関数をimportしてテストしているか」や「拡張子が違う場合」などは考えていません。あまり厳密な実装では無いですが、とりあえず自分が使う分にはこれで良さそうです。
おまけ(Angular向け)
上記の実装を流用してAngular向けのキーマップも設定しようかと思いましたが、別の形で実現することにしました。備忘録として残しておきます。
やろうとしたこと
Angularでは次のように拡張子だけ違うファイルを行き来することがよくあります。
foo/foo.component.ts
foo/foo.component.html
foo/foo.component.scss
foo/foo.component.spec.ts
このように対応するファイルの一覧を表示し、選択して開こうと思いました。
実際のキーマップ
telescope.nvimのfind_files
を使えば似たようなことはできるため、今のところ次のように設定しています。
現在のファイルのディレクトリ以下にあるファイルの一覧を開くキーマップです。
以上、テストファイルやAngularで使えるキーマップの紹介でした。