コードの実行 -> 修正というサイクルを早めるのに便利なvim-quickrunだが、実行時に以下のようにすることで<input_file>の中身を標準入力として受け取ることができる。
:QuickRun -input <input file>
https://github.com/thinca/vim-quickrun/blob/877c8d0/doc/quickrun.txt#L110
のだが、自分の環境でやってみたところ入力が受け取れなかった。
以下のようにして実行すると実行時のコマンドや渡した引数などのデバッグ情報が見られるので確認したものの想定どおりの形になっていた。
:QuickRun -input <input file> -debug x :echo g:x
以下のような設定を言語共通で入れていたのでその辺が悪さをしてるのかと思い無効化して試してみたところ、最初に挙げたコマンドでちゃんと標準入力が受け取れることがわかった。
let g:quickrun_config = { \ '_': { \ 'input': '=%{b:input}', 'cmdopt': '%{b:cmdopt}', 'args': '%{b:args}', \ 'runner': 'vimproc', \ 'runner/vimproc/updatetime': 50, \ 'outputter' : 'error', \ 'outputter/buffer/opener' : 'new', \ 'outputter/buffer/close_on_empty' : 1, \ 'outputter/buffer/running_mark' : 'running...', \ 'outputter/error/success' : 'buffer', \ 'outputter/error/error' : 'quickfix', \ 'hook/time/enable': 1, \ },
なので切り分けつつ特定していくと原因はrunnerとしてvimprocを指定していることだった。vimprocはquickrunの実行を別プロセスで並行して行うために入れていた設定だが、これによってinputが受け取れなくなっているようだった。
runnerをデフォルトのものに直して実行することで問題なく動くようになった。
:QuickRun -input <input file> -runner system