2017-11-30 6 views
0

makeをコマンドラインで使用すると次のコードが正常に動作しますが、vim :makeコマンドを使用すると、プログラム終了時にすべてのテキストのみが出力され、注文。vimはプログラムが終了して順序が狂ったときにのみ印刷結果を返します

正しい出力:

> test 
test 

が、vimの:makeに、私はコードは以下のとおりである

> test 

ました:

repl.c

#include <stdio.h> 

static char input[2048]; 

int main(int argc, char** argv) { 
     fputs("> ", stdout); 
     fgets(input, 2048, stdin); 
     printf("%s", input); 
     return 0; 
} 

Mを

run: repl 
     ./repl 
repl: repl.o 
     cc -o repl repl.c 

答えて

3

akefile Vimはそれを解析し、のQuickFixウィンドウでコンパイル・エラーを表示するためにmake出力をキャプチャします。あなたは:make実行中のプロセスを観察した場合、あなたは:makeため

/bin/bash -c make 2>&1| tee /tmp/v0YCPH1/16 

主なユースケースは、ユーザとの対話をしていない、ビルドを非対話型で実行されるように、コマンドラインに気付くでしょう。テストのいくつかの並べ替えがあなたの目標である場合は、専用のtestターゲット、例えば追加することができます:あなたはfputs()呼び出しの後

fflush(stdout); 

を追加した場合、代わりに

test: repl 
     echo "test" | ./repl 

を、あなたが期待される出力が得られますこれは、入力の前に出力バッファを明示的にクリアするためです。

+2

インタラクティブビルドを実行していて、新しいVimが十分にある場合は、あなたはビルドをインタラクティブにテストできる端末のようなバッファを開くことができる ':terminal'をチェックアウトすることができます。 ':h端末'を参照してください。 –

関連する問題