開発IDEとしてtmuxおよびVimを使用しています。私はtmuxで3つのペインを開いています。1つはソースコードの編集用、もう1つはデバッグ用、もう1つはディスプレイコンソール用です。
Vimからmake
コマンドを実行し、それによって生成されたすべてのビルド情報をディスプレイコンソールペインに送信します。どうすればいいですか?
1つのペインから任意のシェルコマンドを実行し、run-Shell
コマンドを使用して、その出力を別のペインに表示できます。例えば:
tmux run-Shell -t 2 "echo hello"
...そして「hello」がペイン番号2に出力されます。prefix + q
でペイン番号を確認できます。
vim
から、次のことができるはずです。
:!tmux run-Shell -t 2 "make ..."
-b
を追加して、コマンドをバックグラウンドで実行します。
更新:@SLNがもたらしたいくつかの問題に対処 このコメント ...
tmux
は、出力ペインをcopy-modeに配置します。これは、スクロールを実行するときと同じモードであるため、通常の方法でそれを中断します(Ctrl+C 片道です)。注:ペインの右上隅に[12/34]
(つまり、page-num/total-pages)のようなものが表示されていれば、このモードにいることがわかります。make
またはその他のコマンドが完了した後、これはVimが外部コマンド(:!cmd
)を処理する方法です。私はこれを回避する方法を知りませんが、あなたが打つことができると思います Enter コマンドが完了する前に、コマンドが完了するとすぐに戻ります。 (これはシステムに依存する場合があります。)更新2:2番目のアイテムの回避策を知っています。マッピングを使用して外部コマンドを実行する場合は、終了キーを埋め込むことができます。これが、シェルコマンドとしてls
を実行している例です。
nnoremap <leader>ls :!ls<CR><C-L>
通常モードから\ls
を押すとlsコマンドが実行されますが、コンソール出力が閉じてすぐにvim
に戻ります。おそらく、コマンドが何であれ、これに適応できます。
事前にファイルをタッチできます&tail -f file
:1つのペインにあります...そのため、vim内でそのファイルへの出力のリダイレクトを使用してmakeを起動すると、makeセッションが表示されます....