Vimでの私の典型的な日常のワークフローには、2つの垂直ペインがあります。左側に製品コード、右側にテストを示します。
言語(およびテストフレームワーク)を頻繁に切り替えるため、セッションごとにテストコードを実行するための新しいマッピングを作成するのが好きです。私がRubyプロジェクトをやっていて、でクラスを運転しているとしましょうlib/importer.rb
。付随する仕様はにありspec/lib/importer_spec.rb
ます。
仕様を実行するためのマッピングを作成するには、仕様を表示するペインに焦点を合わせ、次のように入力します。
:nnoremap -g :!rspec %<cr>
注:リーダーキーとしてハイフン/マイナスを使用します。
これは動作しますが、を押したときに仕様ペインにフォーカスがある場合のみです-g。実稼働ペインにフォーカスがあり、マッピングにヒットすると、rspecは実稼働コードを実行しようとしますが、これは意味がありません。
これを回避するために、スペックファイルへの絶対パスを記述できます。
:nnoremap -g :!rspec spec/lib/importer_spec.rb<cr>
これは機能しますが、書くのは少し面倒です。
昨夜Practical Vimを読んでいると、コマンドモードで%
展開を使用できることに気付きました。書き込み%
、次にヒットtabすると、パーセントが現在フォーカスされているペインのファイルへの絶対パスに置き換えられます。
これを行う場合:
:!rspec %
…そして、ヒットtab、私はこれを得る:
:!rspec spec/lib/importer_spec.rb
そしてそれは素晴らしいことです!ただし、これを行う場合:
:nnoremap -g :!rspec %
…そして、ヒットtab、私はこれを得る:
:nnoremap -g :!rspec %^I
私はいい人で、税金を払います。なぜこれが私に起こっているのですか?