vimでビルドコマンドを実行し、出力を別のtmuxウィンドウに送信しますか?

vimでビルドコマンドを実行し、出力を別のtmuxウィンドウに送信しますか?

私はそれを使用していますマルチプレクサそしてウィム私の開発IDEとして。 tmuxには3つのウィンドウが開いています。 1つはソースコード編集用、1つはデバッグ用、もう1つはディスプレイコンソール用です。

makeVimでこのコマンドを実行し、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の場合、makeVimは外部コマンド()を処理する方法です:!cmd。この問題を回避する方法はありませんが、Enterコマンドが完了する前にクリックして完了したら返すことができると思います。 (システムによって異なる場合があります。)

アップデート2:私は2番目の項目の解決策を知っています。マッピングを使用して外部コマンドを実行する場合は、Escキーを含めることができます。以下は、lsシェルコマンドに従う例です。

nnoremap <leader>ls :!ls<CR><C-L>

通常モードでlsコマンドを押すと、コンソール出力が閉じて\lsすぐに返されます。vimたぶんあなたの命令は何でもそれに適応できるでしょう。

答え2

あらかじめファイルに触れることができます&tail -f file:ウィンドウにあります... vimでmakeを起動して出力をそのファイルにリダイレクトすると、makeセッションが表示されます。

関連情報