2

Чтобы сбалансировать панели в текущем окне, можно использовать Ctrl - b Meta - 1.. 5 (1, 2). Однако есть ли способ выполнить такую балансировку автоматически при добавлении или удалении панели?

Например, предположим, что у меня есть две одинаково высокие панели в even-vertical расположении Теперь, когда я разделил текущую панель на две (верхнюю и нижнюю), я бы хотел, чтобы tmux автоматически уравновесил все панели, чтобы я получил три одинаково высоких панели в even-vertical компоновке.

1 ответ1

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .