Вы можете предоставить свои собственные привязки, состоящие из команд, соединенных \;
, Например, в вашем ~/.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 для использования этого механизма, который я не рассматривал дальше.