TMux:ウィンドウレイアウトを水平/垂直に反転する方法

TMux:ウィンドウレイアウトを水平/垂直に反転する方法

次のレイアウトを使用して、tmuxセッションに3つのウィンドウが開いているとします。

|----|--|--|
| 1  | 2| 3|
|----|--|--|

私がしたいのは、このレイアウトを水平に反転することです。だから:

|--|--|----|
| 3| 2| 1  |
|--|--|----|

これを行う簡単な方法(可能な限り近道)はありますか?

答え1

Aはswap-pane -s 0 -t 2ソースウィンドウとターゲットウィンドウを交換し、中央ウィンドウは変更されていません。

list-panesその後、現在のサイズを知らせる呼び出す小さなスクリプトを作成できます。

0: [40x23] [history 2/2000, 760 bytes] %0 (active)
1: [19x23] [history 2/2000, 466 bytes] %3
2: [19x23] [history 2/2000, 466 bytes] %4

次に、resize-pane各ウィンドウに対してコマンドを実行して、x方向の新しいサイズを設定します。例えば/tmp/myscript

#!/bin/bash
tmux swap-pane -s 0 -t 2
tmux list-panes |
awk '
$1~/^[0-9]:$/ { x[$1] = substr($2,2)+0 }
END { print "tmux resize-pane -t 0 -x " x["2:"]
      print "tmux resize-pane -t 1 -x " x["1:"]
      print "tmux resize-pane -t 2 -x " x["0:"] }' |
sh

次にchmod +x /tmp/myscript、バインディングに追加します~/.tmux.conf(例:letterの場合は、o通常のプレフィックスキーの後に入力します)。

bind-key o run-shell /tmp/myscript

答え2

このコマンドを使用できますswap-pane。デフォルトでは、これはC-b {プレフィックスと仮定してC-b }バインドされます。C-btmux

場合によっては、Paneに集中し1て2回行うことができますC-b }。その後、ウィンドウに焦点を合わせて一度3実行しますC-b {

これを達成する方法はいくつかあります。C-b C-oどこにいてもフォーカスを使用し、ウィンドウに焦点を合わせて3実行することもできますC-b {

これを頻繁に実行する場合に追加できます~/.tmux.conf

これらのコマンドのどれもウィンドウサイズを維持しません。左側のウィンドウが他の2つのウィンドウよりも1倍大きかった場合は、ウィンドウを移動した後もそのまま残ります。つまり、ウィンドウは1小さくなり、ウィンドウは3大きくなります。ウィンドウサイズを保存できるかどうかわかりません。

関連情報