每当添加/删除窗格时,如何自动平衡 tmux 窗格?

每当添加/删除窗格时,如何自动平衡 tmux 窗格?

要平衡当前窗口中的窗格,可以使用Ctrl- b Meta- 1.. 5(12)然而,有没有办法实现这样的平衡?自动地每当添加或删除窗格时?

例如,假设我的even-vertical布局中有两个等高的窗格。现在,当我将当前窗格拆分为两个(顶部和底部)时,我希望 tmux 自动平衡所有窗格,这样布局中就会有三个等高的窗格even-vertical

答案1

您可以提供自己的绑定,由 连接的命令组成\;。例如,在您的~/.tmux.conf添加

bind-key '"' split-window \; select-layout -n \; select-layout -p

这将Ctrl-b "拆分窗口,然后将布局更改为下一个布局,然后返回到上一个布局。您需要对添加或删除窗口的其他命令执行此操作。


如果您想要更多的自动控制,您可以编写一个后台 tmux 控制模式进程来监听真正的 tmux 进程。它会收到真实 tmux 中发生的所有事情的通知,然后您可以select-layout在看到新窗口或已删除窗口的通知时发送命令。我对此没有进行过太多实验,但如果您使用 2 个终端并在其中一个终端中运行正常会话

tmux new -s mysession

而另一方面

tmux -C attach -t mysession

然后当你在普通 tmux 中拆分窗口、添加新窗口或关闭窗口时,你会看到类似这样的行

%layout-change @2 91a8,80x23,0,0[80x11,0,0,5,80x11,0,12,7]
%window-add @3
%window-close @1

在控制 tmux 中。当你看到这些时,你可以select-layout -n在控制模式下写入,它会影响第一个。有一个python 库使用这个机制,我还没有进一步研究过。

相关内容