私はそれを使用していますマルチプレクサそしてウィム私の開発IDEとして。 tmuxには3つのウィンドウが開いています。 1つはソースコード編集用、1つはデバッグ用、もう1つはディスプレイコンソール用です。
make
Vimでこのコマンドを実行し、Vimがエクスポートしたすべてのビルド情報をディスプレイコンソールウィンドウに送信したいと思います。どうすればいいですか?
答え1
あるウィンドウですべてのシェルコマンドを実行し、そのrun-shell
コマンドを使用して別のウィンドウにその出力を表示できます。たとえば、
tmux run-shell -t 2 "echo hello"
...そして「hello」はウィンドウ番号2に印刷されます。を使用してウィンドウ番号を表示できますprefix + q
。
そこでvim
あなたはできることが必要です:
:!tmux run-shell -t 2 "make ..."
-b
バックグラウンドで実行するコマンドを追加しました。
修正する:@SLNで提起されたいくつかのトラブルシューティングこのコメント...
tmux
出力ウィンドウを次の位置に配置します。コピーモード、スクロールするのと同じパターンなので、通常の方法で中断します(Ctrl+Cは一方向です)。注:[12/34]
ウィンドウの右上隅に次の項目(ページ/合計ページなど)が表示されている場合は、このモードになります。- 他のコマンドが完了したらEnter(またはCtrl+ L)をクリックする必要があるVimの場合、
make
Vimは外部コマンド()を処理する方法です:!cmd
。この問題を回避する方法はありませんが、Enterコマンドが完了する前にクリックして完了したら返すことができると思います。 (システムによって異なる場合があります。)
アップデート2:私は2番目の項目の解決策を知っています。マッピングを使用して外部コマンドを実行する場合は、Escキーを含めることができます。以下は、ls
シェルコマンドに従う例です。
nnoremap <leader>ls :!ls<CR><C-L>
通常モードでlsコマンドを押すと、コンソール出力が閉じて\ls
すぐに返されます。vim
たぶんあなたの命令は何でもそれに適応できるでしょう。
答え2
あらかじめファイルに触れることができます&tail -f file
:ウィンドウにあります... vimでmakeを起動して出力をそのファイルにリダイレクトすると、makeセッションが表示されます。