17

コマンドの出力をクイック フィックス ウィンドウにリダイレクトすることはできますか?

私が実行しているコマンドは

:!java %:r

出力がクイックフィックスウィンドウに表示されることを望んでいました

4

4 に答える 4

14

2 つのオプションのいずれかをお勧めします: 必要makeprgに応じて Java を実行するように構成するか、マッピングまたはコマンドを作成して、他に何も変更せずにクイックフィックス リストを作成します。

オプション 1: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! javamakeprg:set makeprg&:help write-compiler-plugin

オプション 2: コマンドを作成する

または、 を使用cexprしてクイックフィックス リストを作成することもできます。例えば:

:cexpr system('java ' . shellescape(expand('%:r')))

は式expandを展開するために必要であり、シェル コマンドの引数として使用できるようにエスケープします。次に、文字列がエスケープされたパスの先頭に追加され、その結果が によってシェル コマンドとして呼び出されます。このコマンドからの出力は、クイックフィックス リストをロードするために使用されます。'%:r'shellescape'java 'system

これの良いところはmakeprg、他の設定が変更されないことですが、クイックフィックス リストに簡単に入力できることです。もちろん、これをマップしたり、カスタム コマンドを定義したりすることもあるでしょう。

于 2014-08-25T15:40:53.867 に答える
6

これを試して:

  1. set makeprg=java
  2. make %:r

これはちょっとしたハックです。もちろんmakeprg、実際のビルド スクリプトをまだ使用していないことを前提としています。

于 2013-08-08T00:05:24.327 に答える
0

リーダー + j + r をマップして、Java コードを実行し、クイックフィックス ウィンドウに表示します。

map <leader>jr :set makeprg=java <CR>:make %:r<CR>:copen<CR>
于 2013-08-08T00:57:17.480 に答える