Как мне одинаково сбалансировать разделенные панели tmux (1)?

217

Я ищу поведение, похожее на то, как vim (1) обрабатывает свои разделенные окна ^w =. Я знаю, что tmux (1) имеет предопределенные макеты с ^b Meta[1-5], но это, вероятно, не имеет макет, который я сейчас использую.

При разделении окна оно делит текущее окно пополам на обе панели. Разделите снова, и это разделит пополам эту панель на два новых. Объедините вертикальные и горизонтальные разбиения, и они продолжают делить пополам друг друга, каждая новая панель становится все меньше и меньше.

Как сохранить новый макет, который я только что создал, но сбалансировать все вертикальные и горизонтальные разбиения, как это делает vim (1) ^w =?

Аарон Топонсе
источник
В описании «плиточного» макета говорится: «Панели распределены как можно более равномерно по окну в строках и столбцах». Не могли бы вы объяснить, чем то, что вы хотите, отличается от этого, пожалуйста?
Ларс Котхофф
1
Конечно. Это очень хорошо описывает это: gist.github.com/1942422
Аарон Топонсе

Ответы:

284

Вертикально

select-layout even-vertical
Обычно присваивается: Ctrl+ b, Alt+2

По горизонтали

select-layout even-horizontal
Обычно присваивается: Ctrl+ b, Alt+1

blackd
источник
70
Для других людей, которые задаются вопросом: C-b M-2означает Control-b и M-2означает alt + 2.
Кристоф Де Тройер
29
M-2 означает ESC + 2 для меня в Debian с использованием Gnome Terminal. Вероятно, зависит от настройки.
arcyqwerty
7
C-...и M-...emacs-ims M- означает «мета», то есть [Alt] в сочетании с или [Esc], за которым следует ссылочный ключ, обе опции выглядят одинаково по проводам, но есть вероятность, что ваш GUI может перехватывать [ Alt] последовательность
Jasen
3
Просто поместите это здесь на случай, если это поможет кому-то другому, потому что я постоянно путаюсь, «вертикальное» и «горизонтальное» - это направление интервала, то есть выбор четного по вертикали создаст компоновку, в которой три панели сложены по вертикали, равной по высоте, где четно-горизонтальная создаст макет, где три панели расположены бок о бок, равны по ширине
A. Wilson
Как сделать M-2 на macOS с клавиатурой, где «2» требует нажатия клавиши shift (как у французской клавиатуры)? Мне не удалось, с различными комбинациями alt, control, command, escape и shift + 2…
Eric O Lebigot
95

Вы можете использовать ctrl-b spaceдля циклического перебора макетов с равномерным интервалом, но это не обязательно сохранит макет, который вы имели.

Иссак Троттс
источник
2
Идея трюка (если вы хотите , чтобы отобразить его на что - то другое или адаптировать его) bind-key -r Space next-layout. Тогда C-b Space Space Space...
BenC
3
Есть ли способ узнать, какой макет я выбрал, и как быстро перейти к нему снова?
Хьюз
20

Из командной строки вы можете использовать

tmux select-layout tiled

чтобы ваши сплиты были примерно одинакового размера. Вы также можете привязать это к ключевой команде.

Mnebuerquo
источник
3
Обычно назначается:C-b M-5
minipif
7

Я не знаю ни одной комбинации клавиш, но, возможно, это поможет вам:

Вы можете попытаться написать какой-нибудь скрипт для макета и привязать ключ к скрипту. Вы можете сделать это, используя tmuxкоманду pipe-pane [-o] [-t target-pane] [shell-command]для записи текущего макета в скрипт. Далее необходимо прочитать макет, подготовленный сценарием с помощью tmuxкоманды select-layout.

digital_infinity
источник
1

Мне было трудно найти магическое заклинание, чтобы разделить его на 4 равных квадранта, так что вот оно:

# Split session into FOUR EQUAL quadrants
tmux selectp -t 0    # select the first (0) pane
tmux splitw -h -p 50 # split it into two halves
tmux selectp -t 0    # select the first (0) pane
tmux splitw -v -p 50 # split it into two halves

tmux selectp -t 2    # select the new, second (2) pane
tmux splitw -v -p 50 # split it into two halves
tmux selectp -t 0    # go back to the first pane
Дэвид Винсент
источник
1

ctrl bи тогда, :resize-pane -Mи тогда просто используйте свою мышь! (требуется mouse-modeвключить)

sarink
источник