tmuxでウィンドウ、ウィンドウ、およびセッションをインタラクティブに設定(移動)する方法は?

tmuxでウィンドウ、ウィンドウ、およびセッションをインタラクティブに設定(移動)する方法は?

私が知る限り、tmuxの階層は次のとおりです。会議s、その中にs、その中に窓ガラスS. tmuxコマンドを使用してこの階層内の項目を移動することは簡単ではありません。これは、グローバルに一意のウィンドウ識別子が表示されないためです。

組み込み方法や外部方法はありますか?整理する階層として一覧表示できるtmuxのウィンドウとウィンドウを使用して、1つ以上の項目を選択して新しい場所に配置できますか?

私はそれが次のように見えるようにしたいです:

 [ ] 0: 5 windows (created Sun Dec  1 02:29:25 2019) [151x43] (attached)
 [ ]   0: boi (1 panes) [151x43] [layout b83d,151x43,0,0,0] @0
 [ ]   1: mnt (1 panes) [151x43] [layout b841,151x43,0,0,4] @4
 [ ]   2: vi (1 panes) [151x43] [layout b842,151x43,0,0,5] @5
 [*]   3: vi- (1 panes) [151x43] [layout b843,151x43,0,0,6] @6
 [*]   5: sink* (1 panes) [151x43] [layout b846,151x43,0,0,9] @9 (active)
 [ ] 1: 4 windows (created Sun Dec  1 02:30:53 2019) [151x43] (attached)
 [ ]   0: vi (1 panes) [151x43] [layout b83e,151x43,0,0,1] @1
>[ ]   1: vi (1 panes) [151x43] [layout b83f,151x43,0,0,2] @2
 [ ]   2: vi- (2 panes) [151x43] [layout 9749,151x43,0,0[151x21,0,0,3,151x21,0,22,12]] @3
 [ ]     0: [151x21] [history 979/1000, 549206 bytes] %3
 [ ]     1: [151x21] [history 0/1000, 0 bytes] %12 (active)
 [ ]   3: rust-fuse* (1 panes) [151x43] [layout 5c4f,151x43,0,0,10] @10 (active)

1つ以上のセッション/ウィンドウ/ウィンドウを選択し、元の場所から切り取りまたはコピーして、新しい場所に貼り付けることができます。

答え1

ウィンドウ、ウィンドウ、およびセッションには、グローバルに一意の識別子があります。ウィンドウはで%始まり、を通して見ることができますtmux lsp

私は物事を頻繁に移動しないので、おそらく実際よりも面倒です。

簡単なタスクを実行する最も簡単な方法は、ラベル付きウィンドウを使用することです。移動または交換したいウィンドウに移動し(ツリーモードから離れてアクティブウィンドウに設定)、C-b m表示します。次に、結合したいウィンドウまたはC-b : join-pane交換したいウィンドウに切り替えますC-b : swap-pane

同様に、ウィンドウを使用、交換、または移動できますswap-windowmove-window -kマーカーウィンドウを含むウィンドウを使用します。

私はツリーモードでこれを行うことができると思いましたが、実際にはうまく機能しません。理想的には、両方のウィンドウを表示しtてから実行: swap-pane(プレフィックスなし、ツリーモードコマンド:)を使用して置き換えることができますが、毎回両方のターゲットがウィンドウとして表示されるため動作しません。これは確かに改善することができます...

答え2

tmux コマンドは、choose-treeこれらのウィンドウの下にウィンドウを表示し、ウィンドウの下にセッションの階層リストを表示します。デフォルトでは、このキーはw(拡大/縮小)および(ウィンドウの縮小)オプションでこのコマンドを実行します。-Z-w

それを組み合わせることでテンプレートコマンド。たとえば、アクティブなウィンドウをインタラクティブに選択したウィンドウに移動するには、次のコマンドを実行します。

choose-tree -Z "join-pane -t %%"

本当に便利にするには、キーバインディングを作成することをお勧めします。

これは、ウィンドウとウィンドウを操作するための多くのコマンドでサポートされています。テンプレートコマンド。ウィンドウ/ウィンドウにタグを付けたり、ラベルを付けたり、他の操作を実行したりする方法もあります。したがって、これらの利点をさらに活用する方法は明らかです。

最新のtmuxバージョンには、より多くの機能を備えたツリーモードのリストがあります。これらの機能を使用するには、tmuxを更新する必要があるかもしれません。

ところで、より完全な階層は次のとおりです。 クライアント<--セッション<--ウィンドウ<--ウィンドウ これで、ターゲットウィンドウが分割され、2番目の部分は移動ウィンドウです。

関連情報