假设我在 tmux 会话中打开了 3 个窗格,布局如下:
|----|--|--|
| 1 | 2| 3|
|----|--|--|
我想做的是水平翻转这个布局,所以它看起来像这样:
|--|--|----|
| 3| 2| 1 |
|--|--|----|
有没有一种简单的方法(最好是快捷方式)来做到这一点?
答案1
Aswap-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
和 do chmod +x /tmp/myscript
,然后添加到您的~/.tmux.conf
绑定,例如 for letter o
,在您常用的前缀键后键入:
bind-key o run-shell /tmp/myscript
答案2
您可以使用该swap-pane
命令。默认情况下,它绑定到C-b {
and C-b }
,假设C-b
是您的tmux
前缀。
在您的具体情况下,您可以专注于 pane 1
,并执行C-b }
两次。然后你将注意力集中在窗格上3
并执行C-b {
一次。
有很多方法可以实现这一点,您也可以使用C-b C-o
,无论您的焦点在哪里,然后将焦点放在窗格上3
并执行C-b {
。
如果您碰巧经常这样做,您可以在您的~/.tmux.conf
.
请注意,这些命令都不会保留窗格的大小。如果左侧窗格曾经比其他两个窗格大,则在移动窗格后情况仍然如此。这意味着窗格1
将变得更小,窗格3
将变得更大。我不知道是否可以节省窗格大小。