当我有一个 tmux 窗口垂直分成两个窗格时,如何生成一个新的第三个水平窗格来延伸整个宽度?
例如我如何从中得到:
Ctr-b %
+–––––––––+–––––––––+
| | |
| | |
| | |
| | |
| | |
+–––––––––+–––––––––+
对此?
Ctr-b %
Ctr-b
...怎么办?
+–––––––––+–––––––––+
| | |
| | |
| | |
| | |
| | |
+–––––––––+–––––––––+
| |
| |
+–––––––––––––––––––+
而不是这个?
Ctr-b %
Ctr-b "
+––––––––+––––––––––+
| | |
| | |
| | |
| | |
| | |
| +––––––––––+
| | |
| | |
+––––––––+––––––––––+
注意:我不想循环遍历所有可能的布局组合以Ctr-b Space
最终达到所需的布局 - 它应该以尽可能简洁的方式实现。
答案1
tmux 2.3 支持-f
开关,split-window
其中的功能正是您所寻找的(检查 man这里):
-f 选项创建一个跨越整个窗口高度(使用 -h)或整个窗口宽度(使用 -v)的新窗格,而不是分割活动窗格。
例如,在你的情况下:
- CTRL - b+%
+–––––––––+–––––––––+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
+–––––––––––––––––––+
- CTRL - b
:splitw -fv
请注意,CTRL-b您将在 tmux 命令提示符中键入内容(查看底部栏)。
+–––––––––+–––––––––+
| | |
| | |
| | |
| | |
+–––––––––+–––––––––+
| |
| |
| |
+–––––––––––––––––––+
要将此准备好作为键盘快捷键CTRL-b,-请在您的中添加以下内容tmux.conf
:
bind-key - splitw -fw
答案2
您可以使用五种预设布局模式(平铺)之一来实现此目的。从起点(单个垂直拆分)开始,打开一个新窗格,默认情况下,它将拆分活动窗格,然后将窗格排列为平铺模式:
Ctrlb,Alt5
从man tmux
:
M-1 至 M-5 以五种预设布局之一排列窗格:水平偶数、垂直偶数、主水平、主垂直或平铺。
如果这是您经常需要的布局,您可以选择将 a 添加select-layout tiled
到您的按键绑定中。.tmux.conf
答案3
获取更新版本的 tmux(至少 2.3)。
从手册页:
该
-f
选项创建一个跨越整个窗口高度(带有-h
)或整个窗口宽度(带有-v
)的新窗格,而不是分割活动窗格。
答案4
我最终在这里寻找一种将现有窗格移动到终端的左侧、右侧、顶部或底部并跨越整个高度或宽度的方法。
如果其他人最终在这里寻找相同的东西,解决方案是使用split-window
, swap-pane
, 然后kill-pane
一起使用。
例如,将其添加到您的.tmux.conf
文件中:
# Pane moving
bind S-Left split-window -hbf \; swap-pane -t ! \; kill-pane -t !
bind S-Right split-window -hf \; swap-pane -t ! \; kill-pane -t !
bind S-Up split-window -bf \; swap-pane -t ! \; kill-pane -t !
bind S-Down split-window -f \; swap-pane -t ! \; kill-pane -t !
然后您可以使用ctrl+ b, shift+left将当前窗格移动到终端的左侧,跨越其整个高度。