2つのウィンドウ間でペインをミラーリングする


14

1つのtmuxセッションの2つの異なるウィンドウに同じペインを表示することは可能ですか?

通常、メインウィンドウに1つの水平分割があり、上部ペインにvim(端末の高さの約80-90%)があり、作業中のプログラムを実行する下部ペインにコマンドラインがあります。下部のウィンドウは非常に小さいため、エラー出力が表示されないことが多く、tmuxのキーボードショートカットを使用してスクロールバックするのは面倒です。2番目のウィンドウを同じペインにアタッチして、エラー出力をさらに確認する必要がある場合に、スクロールバックを処理せずに2番目のウィンドウにすばやく切り替えることができるようにします。これは可能ですか?

(フォールバックの1つは、teeのようなものを使用してログファイルにstdoutを書き込み、それを2番目のウィンドウでテールすることだと思います。

回答:


7

デフォルトでは、Prefixand を押すことでペインの「ズーム状態」を切り替えることができますz(デフォルトのプレフィックスはCtrl+B)。

これにより、現在のペイン(コマンドラインペインなど)がウィンドウ全体に表示されます。押しPrefixz再び「ズームを解除」ペインに。


10

私はこれがあなたができないことの一つだと思いますtmux(私は1つのペインが異なるサイズのいくつかのスペースで表示されるという問題が主な理由になると期待しています)。ただし、それを回避する方法はいくつかあります。すべては、特定のアクションをいくつかのキーの組み合わせにバインドすることに基づいています。多くは使用しているレイアウトに依存するため、言及している2つのペインを備えた単純なレイアウトを使用すると、作業がはるかに楽になります。

  1. rotate-window -ペインを入れ替えるだけで、コマンド出力(およびViMの小さなウィンドウ)に80%から90%を提供します。

  2. break-panejoin-pane -v -p <preview_percentage> -t !

  3. pipe-panecommand、名前付きパイプにバッファリングされていないリダイレクト(で作成すなわちAファイルシステムノードであるmkfifo) -その後、使用tail -f、他のペインにその名前付きパイプを。

  4. 出力をlessにパイプします。これには、フォローモードtail(少なくともGNUのもの)もあります。

  5. resize-pane -Z小さいパネルでは、端末全体でズームします。その後のズーム解除はアクティブになりますので、快適に機能させるためには少し工夫が必要です。


2
ところで-「1つのペインがさまざまなサイズの複数のスペースに表示されるという問題が主な理由になると思います」それは実装の複雑さの要因かもしれませんが、tmuxはグループ化によってウィンドウレベルで同じことをサポートしますセッションはunix.stackexchange.com/questions/24274/...。小さいウィンドウに下にパディングを追加するだけです。理論的には、ペインミラーリングも同じ方法で実行できます。
mahemoff 14

うーん...あなたは正しい、それはそれについて行く方法かもしれません。
ペテルフ14

1

スクリプトを使用して、疑似セッションをファイルに出力し、tailそのファイルを2番目のウィンドウに出力できます。

作業ウィンドウで。

script -f tailme.out

表示ペインで。

tail -f tailme.out

1

あなたの場合はPrefix+ zが最も直接的な解決策になるだろうと私は同意しますが、ペインをミラーリングするという一般的な質問には、動作する可能性のあるハックが少しあります-tmux内にスクリーンセッションをネストします。

gnu画面をインストールしてから、ミラーリングするペインに対して起動します。次にscreen -x、他のペインに添付します。

必要に応じて、ペインに別のtmuxセッションをネストすることもできますが、tmuxセッションは慎重にネストする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.