如何向 tmux 窗口添加水平分割以跨越父窗口的整个宽度?

如何向 tmux 窗口添加水平分割以跨越父窗口的整个宽度?

当我有一个 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)的新窗格,而不是分割活动窗格。

例如,在你的情况下:

  1. CTRL - b+%
+–––––––––+–––––––––+
|         |         |
|         |         |
|         |         |  
|         |         |
|         |         |
|         |         |
|         |         |
|         |         |
+–––––––––––––––––––+

  1. 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将当前窗格移动到终端的左侧,跨越其整个高度。

相关内容