コマンドの出力をクイック フィックス ウィンドウにリダイレクトすることはできますか?
私が実行しているコマンドは
:!java %:r
出力がクイックフィックスウィンドウに表示されることを望んでいました
2 つのオプションのいずれかをお勧めします: 必要makeprg
に応じて Java を実行するように構成するか、マッピングまたはコマンドを作成して、他に何も変更せずにクイックフィックス リストを作成します。
makeprg
プラグインの使用とコンパイラ他の人が言ったように、私は一般的makeprg
にこれにオプションを設定します。それはハックではありません。まさにそれがmakeprg
オプションの目的です。
唯一の問題は、実行したい別のビルド スクリプトがある場合です。より一般的な解決策は、単純なコンパイラ プラグインを作成することです。たとえば、 のどこかにruntimepath
ファイルを作成して、次のcompiler/java.vim
ように設定できます。
if exists("current_compiler")
finish
endif
let current_compiler = "java"
CompilerSet makeprg=java
Java を使用している場合は、現在のウィンドウで必要に応じて設定でき:compiler java
ます。すべてのウィンドウで使用する場合は、強打で , を使用します。すべてのコンパイラ プラグインがこのオプションを設定するわけではありませんが、いつでも でリセットできます。詳細については、お試しください。makeprg
:compiler! java
makeprg
:set makeprg&
:help write-compiler-plugin
または、 を使用cexpr
してクイックフィックス リストを作成することもできます。例えば:
:cexpr system('java ' . shellescape(expand('%:r')))
は式expand
を展開するために必要であり、シェル コマンドの引数として使用できるようにエスケープします。次に、文字列がエスケープされたパスの先頭に追加され、その結果が によってシェル コマンドとして呼び出されます。このコマンドからの出力は、クイックフィックス リストをロードするために使用されます。'%:r'
shellescape
'java '
system
これの良いところはmakeprg
、他の設定が変更されないことですが、クイックフィックス リストに簡単に入力できることです。もちろん、これをマップしたり、カスタム コマンドを定義したりすることもあるでしょう。
これを試して:
set makeprg=java
make %:r
これはちょっとしたハックです。もちろんmakeprg
、実際のビルド スクリプトをまだ使用していないことを前提としています。
リーダー + j + r をマップして、Java コードを実行し、クイックフィックス ウィンドウに表示します。
map <leader>jr :set makeprg=java <CR>:make %:r<CR>:copen<CR>