Вопрос: «Максимизация» панели в tmux


Иногда было бы очень полезно увеличить область в tmux, а затем восстановить ее до прежнего размера.

Я читал руководство, и я не могу найти способ. То, что я придумал, - это то, что я могу связать ключ, чтобы изменить размер панели на «максимальную» ширину и еще один ключ, чтобы восстановить его до определенной предопределенной ширины.

Конечно, это имеет свои недостатки, поэтому мне интересно, есть ли у кого-то лучшая идея.


193
2018-01-27 23:10


Источник




Ответы:


Другим вариантом может быть использование break-pane с последующим join-pane, Из справочная страница:

break-pane [-d] [-t target-pane]
                   (alias: breakp)
             Break target-pane off from its containing window to make it the
             only pane in a new window.  If -d is given, the new window does
             not become the current window.

join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
                   (alias: joinp)
             Like split-window, but instead of splitting dst-pane and creating
             a new pane, split it and move src-pane into the space.  This can
             be used to reverse break-pane.

Таким образом, вы можете выбрать свою панель и сделать break-pane а затем, как только вы закончите с максимальной версией, вы можете повторно присоединиться к ней с помощью join-pane - может потребоваться несколько аргументов по умолчанию, чтобы вернуть их на место или просто переставить впоследствии.

Обратите внимание, что панель соединения находится в tmux 1.3, но не в 1.1. (Не уверен насчет 1,2, извините).

И просто упомянуть, что терминатор (терминальный мультиплексор на основе графического интерфейса (GTK)) может делать объект масштабирования. (Ctrl-Shift-X является привязкой по умолчанию). Конечно, это не делает много вещей, которые tmux делает ...


49
2018-05-03 22:50



Начиная с версии 1.8 есть лучшее решение (см. Ответ Тайлера Холиена). - momeara
Для тех, кто пробует это перед лучшим ответом, чтобы получить доступ к панели: join-pane -t:{previous} для предыдущего окна или join-pane -t:0 присоединить его к окну 0. - Realistic


Это теперь родная функция tmux.

В версии 1.8 было добавлено -Z пометить resize-pane, На странице руководства:

С -Z активная панель переключается между увеличенными (занимая   все окно) и unzoomed (его нормальное положение в макете).

Это обязательно tmux-приставка-Z по умолчанию на моей установке (через Homebrew на OS X).


405
2018-04-01 18:49



кто-то с адекватными привилегиями должен ответить на этот вопрос. Непостижимо, что кто-то все равно будет использовать версию tmux, отличную от последней. - Jay
это было здорово, просто добавлено в мой .tmux.conf и теперь имеет гораздо более жидкий опыт: bind-key z resize-pane -Z - St-Ste-Ste-Stephen
Возможно ли каким-либо образом увидеть края погружных панелей, видимых для определения глубины? Я продолжаю забывать, что я увеличен, а «Z-title» на самом деле недостаточно заметен. - lkraav
Работает в BunsenLabs из коробки. - Mateusz Piotrowski
«INCONCEIVABLE» - «Вы продолжаете использовать это слово. Я не думаю, что это означает, что вы думаете, что это значит». - Michael Anderson


Поэтому я знаю, что вы это задали некоторое время назад ... но я не переключался с экрана до сегодняшнего дня!

Я столкнулся с той же проблемой, вот как я ее решил:

unbind +
bind + new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \; swap-pane -s tmux-zoom.0 \; select-window -t tmux-zoom
unbind -
bind - last-window \; swap-pane -s tmux-zoom.0 \; kill-window -t tmux-zoom

Если ваш рабочий процесс похож на мой (т. Е. Вы максимизируете окно, выполняете какую-то работу, а затем сразу не мотивируете его), это должно отлично работать для вас.


47
2017-11-15 20:21



(Если это было непонятно, это поддерживает макет в вашем исходном окне ... после максимизации и не максимизации, это точно то же самое.) - Ryan
Любая идея, как я мог сопоставить одно и то же нажатие клавиш для обоих? Что-то вроде bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>, Но теперь я хочу определить эту функцию где-то еще, ради чистоты, и просто bind c-m :max_or_min, Это возможно? Мне трудно найти. (Я нахожу, что я часто нажимаю неправильную команду и в итоге создаю дополнительные, пустые окна «tmux-zoom»). - chadoh
Это работало для меня только тогда, когда я удалял «clear && echo TMUX ZOOM && read» из максимизации. - Epeli
Thu максимизирует работу для меня, но действие минимизации просто убивает исходное окно, оставляя максимально развернутое окно. - paradroid
Это сработало, но я теряю макет ... почти! - John Hunt


Улучшен зуммер. Теперь можно масштабировать несколько панелей, даже иерархически. После выполнения ниже и перезагрузки сервера tmux (Ctrl-r в моем случае) у вас будет Икс ключ для увеличения и уменьшения масштаба. масштабирование достигается за счет открытия панели в новом окне, а уменьшение - за счет возврата панели в ее исходное окно. Если вы закончите разбиение окна увеличения, вы сможете увеличить масштаб окна увеличения и увеличить масштаб до окна увеличения. уменьшение масштаба происходит только в том случае, если вы находитесь в окне масштабирования, содержащем отдельную панель.

Добавьте следующее к концу ~/.tmux.conf

~$ grep "bind x" ~/.tmux.conf
unbind x
bind x run ". ~/.tmux/zoom"

Добавить следующий файл

~$ cat ~/.tmux/zoom
#!/bin/bash -f
currentwindow=`tmux list-window | tr '\t' ' ' | sed -n -e '/(active)/s/^[^:]*: *\([^ ]*\) .*/\1/gp'`;
currentpane=`tmux list-panes | sed -n -e '/(active)/s/^\([^:]*\):.*/\1/gp'`;
panecount=`tmux list-panes | wc | sed -e 's/^ *//g' -e 's/ .*$//g'`;
inzoom=`echo $currentwindow | sed -n -e '/^zoom/p'`;
if [ $panecount -ne 1 ]; then
    inzoom="";
fi
if [ $inzoom ]; then
    lastpane=`echo $currentwindow | rev | cut -f 1 -d '@' | rev`;
    lastwindow=`echo $currentwindow | cut -f 2- -d '@' | rev | cut -f 2- -d '@' | rev`;
    tmux select-window -t $lastwindow;
    tmux select-pane -t $lastpane;
    tmux swap-pane -s $currentwindow;
    tmux kill-window -t $currentwindow;
else
    newwindowname=zoom@$currentwindow@$currentpane;
    tmux new-window -d -n $newwindowname;
    tmux swap-pane -s $newwindowname;
    tmux select-window -t $newwindowname;
fi

24
2018-06-07 06:03



Только один взлет ?! Этот ответ потрясающий! Работает очень хорошо, представляет новые функциональные возможности, которые теперь полностью заменяют используемую мною программу «terminator». - sillyMunky
+1 Это действительно хорошо! На сегодняшний день лучшим рабочим решением я до сих пор сталкивался! Благодаря!! - armandino
Я согласен. Это работает, и это более чем удивительно. Это экран ++ - Brad Parks
+1. Это работает отлично, но это часть секунды (~ 0.8s) медленнее, чем ответ Райана выше, по крайней мере, в моей системе. Неважно, но мне интересно, есть ли способ сделать это быстрее - Amelio Vazquez-Reina
Прекрасно. Мне нравятся специальные названия панелей (zoom @ ...), которые являются полезными напоминаниями и единственной командой «x» для увеличения / уменьшения. - Eric Lebigot


Cntl + b (префикс) + z позволяет увеличить масштаб панели в tmux 2.1. он снова нажимает Cntrl + b + z, а панель увеличения - до исходного. Он не создает новую панель.

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

Опция окна масштабирования, вероятно, более универсальна.


7
2017-09-01 13:46





Я сделал это, чтобы максимизировать / свести к минимуму с тем же нажатием клавиши:

bind C-k run "if [[ $(tmux list-window) =~ ZOOM ]]; then tmux last-window; tmux swap-pane -s ZOOM.1; tmux kill-window -t ZOOM; else tmux new-window -d -n ZOOM; tmux swap-pane -s ZOOM.1; tmux select-window -t ZOOM;fi"

2
2018-05-07 21:32





Также для меня работа без «clear && echo TMUX ZOOM && read». С этим фрагментом каждый раз, когда я сворачиваю одну панель из первого окна, исчезает.


1
2018-04-20 12:21





Для тех, кто не может идти с tmux 1.8 или предпочитает более длительное максимизированное состояние, я опубликовал tmux, который работает с tmux 1.6+,

Надеюсь, это поможет.


0
2018-05-05 21:53