次のレイアウトを使用して、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-b
tmux
場合によっては、Paneに集中し1
て2回行うことができますC-b }
。その後、ウィンドウに焦点を合わせて一度3
実行しますC-b {
。
これを達成する方法はいくつかあります。C-b C-o
どこにいてもフォーカスを使用し、ウィンドウに焦点を合わせて3
実行することもできますC-b {
。
これを頻繁に実行する場合に追加できます~/.tmux.conf
。
これらのコマンドのどれもウィンドウサイズを維持しません。左側のウィンドウが他の2つのウィンドウよりも1倍大きかった場合は、ウィンドウを移動した後もそのまま残ります。つまり、ウィンドウは1
小さくなり、ウィンドウは3
大きくなります。ウィンドウサイズを保存できるかどうかわかりません。