2017-01-09 1 views
1

私の一般的な質問は、少なくとも、ビルドファイルをデバッグするためには、実行されるコマンドの正確なバージョンを確認したいと思います。以下に例を挙げます。また、STは出力をSTDERRにキャプチャするだけなので、STDOUTに送信されるその実行の出力を確認したいと思います。ST3ビルドのstdoutをキャプチャする方法は?

ここに私がこれを望む理由の例があります。

ビルドファイルsql.sublime_buildを作成し、それをSublime Packages Directoryに保存しました。

{ "CMD":[ "PSQL"、 "-U"、 "TEVS"、 "-d"、 "TEVS"、 "-o"、 "psql_out.txt"、 "-f" 、「$ファイル」]}

私は、実行中のビルドがその内容を変更した場合、それは再ロードわかりますように、私はpsql_out.txtにオープンST3でペインを持っています。

私は、コマンドラインからの入力でpsqlを実行すると動作するファイルtestbuild.sqlを持っています。

testbuild.sqlのST3タブを開いてコマンド-Bを押すと、ST3フッタ行が「ビルド」に数秒間変化するのがわかりますが、出力ファイルに変更はありません。あるタイプのコマンドを入力すると開くST3ウィンドウの下部ペインB。

ST3がどのようにコマンドを呼び出すのかを見るだけで大​​いに役立ちます。

私は、崇高なテキスト自体の変更を伴わない解決策を好むでしょう。私はまた、より長い形態

{ "CMD" 試みた

PS:[ "PSQL"、 "-U"、 "TEVS"、 "-d"、 "TEVSを"、「-o "、" /Users/Wes/Dropbox/Programming/ElectTransparency/psql_out.txt "、" -f "、" $ file "]、 " working_dir ":"/Users/Wes/Dropbox/Programming/ElectionTransparency " ?}

+0

ビルドを試みるときにST3から他の診断情報を取得することも役立ちます。たとえば、これの1回の反復で、私は障害のあるJSON構文を持つ.sublime_buildファイルを持っています。 JSONが解析しなかったということは素晴らしいことでした。 – WesR

答えて

2

ために、あなたの質問の一部を取り扱い:

実行されるコマンドの正確なバージョンを見たいと思います。

限り、ビルドシステムがtrueにオプションquietを設定していないとして、サブライムには、ビルドシステムを実行したとき、それはそのコンソールに動いているものを出力します。 quietはデフォルトでfalseに設定されています。設定していない限り、実行中の設定が表示されます。例えば:あなたはCtrlキー+ `

をメニューからView > Show Console経由でコンソールを開いたり、を押すことができ

Simple build

私はまた、STDOUTに送信されますその実行の出力を見てみたいですSTはSTDERRへの出力のみをキャプチャするためです。

サブライムは、stdoutstderrの両方をキャプチャして表示し、ビルド結果パネルに表示します。これが期待していない最も一般的な理由は、通常、出力をバッファリングするプログラムに関連しているため、プログラムが終了したり、出力がたくさん生成されるまで、ビルド結果には表示されません。あなたが実際にはまだ、ファイルへの出力を生成しても、ビルド結果ウィンドウでそれを見てみたかった、次のようなものが動作するはずと仮定

Sublime showing build output

(警告:私が使用してもPSQLに精通していません):

{ 
    "shell_cmd": "psql -U tevs -d tevs -f $file | tee psql_out.txt", 
    "selector": "source.sql" 
} 

これは、シェルのリダイレクトの使用を可能にshell_cmd代わりにcmdを使用します。 -oを指定しないと、psqlは代わりにstdoutに出力を送ります(そうしないと、それを得るために適切な引数を設定する必要はありません)。 teeプログラムパイプstdinstdoutまた、指定したファイルのリストに保存するので、端末で出力を確認して同時にファイルに保存することもできます。

ビルドを試みるときにST3から他の診断情報を取得することも役立ちます。たとえば、これの1回の反復で、私は障害のあるJSON構文を持つ.sublime_buildファイルを持っています。 JSONが解析しなかったということは素晴らしいことでした。

ビルドシステムでこれを行う方法はありません。解析しないと、ビルドシステムメニューに表示されず、他のそのようなファイルとは異なり、Sublimeはエラーをスローしません。しかし、構文の強調表示は、それはそれは(構文は、次のコロンに怒っているので、ここでshell_cmd行の末尾にカンマが含まれていません)を助けることができるように構文が、無効であると考えたときにヒント与える:

Build syntax error 場合このようなエラーヒントが表示されない場合は、使用しているカラースキームがそれらを処理していない可能性があります。

+0

非常に徹底的な答え。ありがとう! – WesR

+0

ST3のドキュメントでは、他の初心者(および多分ST3ドキュメンテーションライター)には重要な教訓がありますが、それは明らかです:(1)情報ウィンドウが結果ウィンドウに表示されないようにコンソールを見てください。 (2) "cmd"はシェルが提供する機能を有効にしませんが、 "shell_cmd"は機能します。再度ありがとうOdatNurd! '.sublime-build'ファイル(と' .sublime-preferences'のような他の崇高なフォーマット)の特定の強調表示については、['PackageDev'](https://packagecontrol.io/packages/PackageDev)パッケージをインストールしてください。 – WesR

+1

@WesRさまざまな構文オプションは、PackageDevの構文メニューで利用できます。自分のプロジェクトのプラグとして、私の[Neon Color Scheme](https://packagecontrol.io/packages/Neon%20Color%20Scheme)は様々なPackageDevフォーマットをサポートしていますので、エラー](https://i.stack.imgur.com/u6laU.png)。 – MattDMo

関連する問題