"Максимізація" панелі у форматі


211

Іноді було б дуже корисно максимізувати панель у форматі tmux, а потім відновити її до попереднього розміру.

Я читав посібник, і я не можу знайти спосіб. Те, що я придумав, полягає в тому, що я можу прив'язати ключ, щоб змінити розмір панелі на "max" ширину, і іншу клавішу, щоб відновити її до певної заданої ширини.

Звичайно, це має свої недоліки, тому мені цікаво, якщо хтось має кращу ідею.

Відповіді:


50

Іншим варіантом може бути використання 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 - може знадобитися аргумент за замовчуванням, щоб повернути його на місце, або просто переставити потім.

Зверніть увагу, що панель join-pane виглядає як tmux 1.3, але не 1.1. (Не впевнений про 1.2, вибачте).

І тільки про це термінатор (GUI (GTK) термінальний мультиплексор) може робити масштабування. (Ctrl-Shift-X - це прив'язка за замовчуванням). Звичайно, це не робить багато речей, які тмук робить ...


26
У версії 1.8 є краще рішення (див. Відповідь Тайлера Холієна).
momeara

1
Для тих, хто спробує це зробити перед тим, як відповісти краще, щоб отримати приєднатися панель для роботи робити: join-pane -t:{previous} для попереднього вікна або join-pane -t:0 щоб приєднати його назад до вікна 0.
Realistic

440

Це тепер нативна функція tmux.

Версія 1.8 побачила додавання -Z прапором resize-pane. На сторінці man:

З -Z активна панель перемикається між збільшеним (займаючи   цілого вікна) і беззубого (його нормальне положення в макеті).

Це обов'язково tmux-префікс - z за замовчуванням на моїй установці (за допомогою Homebrew на OS X).


3
це було здорово, просто додано до мого .tmux.conf і тепер має набагато більше досвіду: bind-key z resize-pane -Z
St-Ste-Ste-Stephen

Чи можна якимось чином побачити краї підводних панелей для індикації глибини? Я продовжую забувати, що я збільшений, і "Z-титул" не дуже видно.
lkraav

Працює в BunsenLabs з коробки.
Mateusz Piotrowski

дивним. це насправді працює
sayem siam

48

Так що я знаю, що ви запитали це деякий час назад ... але я не перейшов з екрану до сьогоднішнього дня!

Я зіткнувся з тією ж проблемою, ось як я її вирішив:

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

Якщо ваш робочий процес подібний до мого (наприклад, ви збільшуєте вікно, виконуєте певну роботу, а потім негайно його розгортаєте), це добре підходить для вас.


(У випадку, якщо це не було зрозуміло, це зберігає макет у вашому початковому вікні ... після максимізації та зняття максимуму, це точно так само.)
Ryan

2
Будь-яка ідея, як я міг би нанести на карту те ж саме натискання клавіш? Щось на зразок bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>. Але тепер я хочу визначити цю функцію в іншому місці, заради чистоти і справедливості bind c-m :max_or_min. Це можливо? Мені важко шукати. (Я вважаю, що я часто натискаю неправильну команду і створюю додаткові, порожні вікна "tmux-zoom".)
chadoh

6
Це спрацювало лише тоді, коли я видалив & quot; clear & amp; & amp; echo TMUX ZOOM & amp; read 'from maximize.
Epeli

Максимізація працює для мене, але дія з мінімізації просто вбиває початкове вікно, залишаючи максимальну панель.
paradroid

Цей сорт працював, але я втрачаю макет .. практично, хоча!
John Hunt

25

Покращено масштабування. Тепер можна масштабувати кілька панелей, навіть ієрархічно. Після того, як ви зробите нижче та перезавантажите ваш tmux сервер (Ctrl-r у моєму випадку), ви отримаєте ваш x клавішу, щоб збільшити або зменшити масштаб панелі. Збільшення масштабу досягається шляхом відкриття панелі в новому вікні, а зменшення масштабу досягається шляхом повернення панелі до початкового вікна. Якщо ви закінчите розбивати вікно збільшення, ви зможете збільшити масштаб у вікні збільшення і зменшити масштаб у вікні збільшення. зменшення масштабу відбувається, лише якщо ви знаходитесь у вікні збільшення, що містить одну панель.

Додайте наступні до кінця ~/.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

4
Тільки одноразове голосування ?! Ця відповідь приголомшлива! Працює дуже добре, представляє гарну нову функціональність, яка тепер повністю замінює роздуту програму термінатора, яку я використовував.
sillyMunky

+1 Це дійсно добре! Безумовно, найкращим робочим рішенням, яке я зустрічаю досі! Дякую!!
armandino

Я погоджуюсь. Це працює і є більш ніж приголомшливим. Це екран ++
Brad Parks

+1. Це чудово працює, але це частка секунди (~ 0.8s) повільніше, ніж відповідь @ Райан вище, принаймні на моїй системі. Не велика справа, але мені цікаво, чи є спосіб зробити це швидше
Amelio Vazquez-Reina

Красиво дійсно. Мені дуже подобаються спеціальні назви панелей (zoom @…), які є корисними нагадуваннями, і єдина команда "x" для збільшення / зменшення.
Eric O Lebigot

9

Cntl + b (префікс) + z працює для масштабування на певній панелі у форматі 2.1. його знову натискаєте Cntrl + b + z, він повертається до початкового розміру. Він не створює нову панель.

У порівнянні з рішенням, розміщеним вище aksay, якщо ви спробуєте розділити масштабовану панель, вона не дозволить розділити її, і повернеться до початкової панелі і розділить цю панель.

Можливо, варіант вікна масштабування є більш універсальним.


2

Я зробив це, щоб збільшити / мінімізувати за допомогою одного натискання клавіші:

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"

1

Також для мене робота без 'clear & amp; echo TMUX ZOOM & amp; read '. З цим фрагментом кожен раз, коли я згортаю одну панель з першого вікна, зникає.


1

Проблема з resize-pane -Z Перемикання полягає в тому, що іноді він виконує операцію зворотного масштабування, ніж бажано, зокрема, коли його викликають зі сценарію або всередині tmux.conf.

Ось робота:

tmux-zoom-in.sh

#!/bin/bash

# Zoom in the current pane ONLY if it is not currently zoomed.
# Requires tmux version >= 1.8

tmux list-panes -F '#F' | grep -q Z || tmux resize-pane -Z

tmux-zoom-out.sh

#!/bin/bash

# Zoom out the current pane ONLY if it is not currently zoomed.
# Requires tmux version >= 1.8

tmux list-panes -F '#F' | grep -q Z && tmux resize-pane -Z


0

Я на Ubuntu 12.04 і також потрібна ця функція. Починаючи з tmux 1.8, існує вбудована підтримка для перемикання масштабування за допомогою tmux-префікса z. Оскільки ми, напевно, не побачимо tmux 1.8 в 12.04, я зібрав tmux 1.8 з джерела на іншому комп'ютері dev, перейменував його в _tmux-1.8 і просто скопіював 1.8 бінарний файл в /usr/bin/_tmux-1.8 і редагував. alias tmux = '_ tmux-1.8'.

Я не помітив жодних проблем, використовуючи цей швидкий і брудний метод, і якщо / якщо tmux 1.8 приходить до 12.04, я нічого не зламав.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.