背景:現在編集中のテストファイルを簡単に実行するために、このマッピングをmap ,r :! bundle exec ruby %<CR>
常に使用しています。しかし、私もそうします:
map ,t :! bundle exec ruby test/integration/some_integration_test.rb<CR>
他のファイルで作業しているときに、この特定の統合テストを2つのキーストロークで実行できるようにします。別の統合テストファイルパスを使用して上記のコマンドを入力したアプリケーションの他の領域に移動すると、パスがハードコードされています。
そのようなマッピングを自動的に作成するコマンドを作成するにはどうすればよいですか?
map ,T :map ,t :! bundle exec ruby %<CR>
マッピングの作成中に%が展開されないため、機能しません。したがって、tは常に現在のファイルを実行します(マッピングの作成時に編集していたファイルを実行したい場合)。
[編集]:答えからわずかに調整された解決策:
nnoremap ,r :! bundle exec ruby %<CR>
nnoremap ,T :let g:testfile = expand('%:p')
nnoremap ,t :! bundle exec ruby <C-r><C-r>=g:testfile<CR><CR>
,r
常にカーソルの下でファイルを実行します,T
後で実行するために、現在のファイルパスを変数に保存します,t
以前に保存されたファイルパスを実行します