Frage Maximieren eines Bereichs in tmux


Manchmal wäre es sehr nützlich, einen Bereich in tmux zu maximieren und ihn dann auf seine vorherige Größe wiederherzustellen.

Ich habe das Handbuch gelesen und finde keinen Weg. Was ich entwickelt habe, ist, dass ich einen Schlüssel binden konnte, um die Größe des Bereichs auf "maximale" Breite zu ändern, und einen anderen Schlüssel, um ihn auf eine vordefinierte Breite wiederherzustellen.

Natürlich hat das seine Nachteile, also frage ich mich, ob jemand eine bessere Idee hat.


194
2018-01-27 23:10


Ursprung




Antworten:


Eine andere Option könnte sein, zu verwenden break-pane gefolgt von join-pane. Von dem Man Seite:

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.

So können Sie Ihren Bereich auswählen und tun break-pane und dann, wenn du mit der maximierten Version fertig bist, kannst du sie wieder mitmachen join-pane - benötigen möglicherweise einige Standardargumente, um es wieder an Ort und Stelle zu bringen oder einfach danach neu anzuordnen.

Beachten Sie, dass der Join-Bereich in tmux 1.3, aber nicht in 1.1 angezeigt wird. (Nicht sicher über 1.2, tut mir leid).

Und nur um das zu erwähnen Terminator (Ein GUI (GTK-basierter) Terminal-Multiplexer) kann die Zoom-Sache machen. (Strg-Umschalt-X ist die Standard-Tastenkombination). Natürlich macht es nicht viele Dinge, die tmux tut ...


49
2018-05-03 22:50



Ab Version 1.8 gibt es eine bessere Lösung (siehe Tyler Holiens Antwort). - momeara
Für diejenigen, die dies vor der besseren Antwort versuchen, um Join-Bereich zu arbeiten, tun Sie: join-pane -t:{previous} für das vorherige Fenster oder join-pane -t:0 um es wieder zu Fenster 0 zu verbinden. - Realistic


Dies ist jetzt eine native tmux-Funktion.

In der Version 1.8 wurde der -Z Flagge zu resize-pane. Von der man-Seite:

Mit -Z wird der aktive Bereich zwischen gezoomt umgeschaltet (besetzt die   das ganze Fenster) und unzoomed (seine normale Position im Layout).

Es ist verpflichtet TMux-Präfix-z standardmäßig bei meiner Installation (über Homebrew unter OS X).


409
2018-04-01 18:49



Jemand mit angemessenen Privilegien sollte dies zur Antwort machen. Es ist undenkbar, dass jemand immer noch eine andere Version von tmux als die neueste verwendet. - Jay
das war großartig, gerade zu meiner .tmux.conf hinzugefügt und habe jetzt eine viel flüssigere Erfahrung: bind-key z resize-pane -Z - St-Ste-Ste-Stephen
Ist es möglich, die Kanten der getauchte Scheibe zur Tiefenanzeige sichtbar zu machen? Ich vergesse immer wieder, dass ich herangezoomt bin und der "Z-Titel" nicht wirklich prominent genug ist. - lkraav
Funktioniert in BunsenLabs out of the box. - Mateusz Piotrowski
"INCONCEIVABLE" - "Du benutzt dieses Wort weiter. Ich denke nicht, dass es bedeutet, was du denkst, dass es bedeutet." - Michael Anderson


Ich weiß, dass du das vor einer Weile gefragt hast ... aber ich bin nicht vom Bildschirm auf heute gewechselt!

Ich stieß auf das gleiche Problem, hier ist, wie ich es gelöst habe:

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

Wenn Ihr Workflow wie meiner ist (d. H. Sie maximieren ein Fenster, machen Sie etwas Arbeit, dann sofort unmaximieren) sollte dies für Sie gut funktionieren.


47
2017-11-15 20:21



(Falls es nicht klar war, behält dies das Layout in Ihrem ursprünglichen Fenster bei ... nach der Maximierung und Un-Maximierung ist es genau dasselbe.) - Ryan
Irgendeine Idee, wie ich den gleichen Tastenanschlag zu beiden zuordnen könnte? Etwas wie bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>. Aber jetzt möchte ich diese Funktion woanders definieren, aus Gründen der Sauberkeit und einfach bind c-m :max_or_min. Ist das möglich? Ich finde es schwer zu suchen. (Ich finde, dass ich oft den falschen Befehl triff und am Ende zusätzliche, leere "tmux-zoom" -Fenster erstelle.) - chadoh
Dies funktionierte bei mir nur, wenn ich "clear && echo TMUX ZOOM && read" von maximize entfernte. - Epeli
Thw maximize funktioniert für mich, aber die Minimierung reduziert nur das ursprüngliche Fenster und lässt das maximierte Fenster übrig. - paradroid
Diese Art von funktioniert, aber ich verliere mein Layout .. fast obwohl! - John Hunt


Verbesserter Zoomer. Jetzt kann man mehrere Bereiche sogar hierarchisch vergrößern. Nachdem Sie den untenstehenden Schritt gemacht und Ihren tmux Server neu geladen haben (Ctrl-r in meinem Fall), haben Sie Ihre x Taste zum Vergrößern und Verkleinern eines Bereichs. Das Vergrößern wird erreicht, indem das Fenster in einem neuen Fenster geöffnet wird, und das Auszoomen wird erreicht, indem ein Fenster in das ursprüngliche Fenster zurückgebracht wird. Wenn Sie das Zoom-In-Fenster aufteilen, können Sie in die Fenster des Zoom-In-Fensters hineinzoomen und wieder zurück in das Zoom-In-Fenster zoomen. Das Auszoomen erfolgt nur, wenn Sie sich in einem Zoom-In-Fenster befinden, das ein einzelnes Fenster enthält.

Fügen Sie Folgendes zu Ihrem Ende hinzu ~/.tmux.conf

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

Fügen Sie die folgende Datei hinzu

~$ 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



Nur eine einzige Aufwertung ?! Diese Antwort ist großartig! Funktioniert sehr gut, führt eine nette neue Funktionalität ein, die jetzt das aufgeblähte Terminator-Programm, das ich benutzt habe, vollständig ersetzt. - sillyMunky
+1 Das ist wirklich gut! Mit Abstand die beste Arbeitslösung, die mir bisher begegnet ist! Vielen Dank!! - armandino
Ich stimme zu. Das funktioniert und ist mehr als großartig. Es ist Bildschirm ++ - Brad Parks
+1. Das funktioniert großartig, aber es ist ein Bruchteil einer Sekunde (~ 0.8s) langsamer als @ Ryans Antwort oben, zumindest auf meinem System. Keine große Sache, aber ich frage mich, ob es einen Weg gibt, es schneller zu machen - Amelio Vazquez-Reina
Wahrlich wunderschön. Ich liebe die speziellen Fensternamen (Zoom @ ...), die nützliche Erinnerungen sind, und den einzelnen "x" -Zoom-Ein- / Aus-Befehl. - Eric Lebigot


Cntl + b (Präfix) + z funktioniert, um in einen bestimmten Bereich in tmux 2.1 zu zoomen. Wenn Sie Cntrl + b + z erneut drücken, wird die ursprüngliche Größe wiederhergestellt. Es erstellt kein neues Fenster.

Wenn Sie versuchen, den vergrößerten Ausschnitt zu teilen, wird im Gegensatz zu der Lösung, die oben von aksay gepostet wird, die Teilung nicht zugelassen. Stattdessen wird zum ursprünglichen Bereich zurückgekehrt und stattdessen dieser Bereich aufgeteilt.

Die Zoom-Fenster-Option ist wahrscheinlich vielseitiger.


7
2017-09-01 13:46





Ich habe das gemacht, um mit demselben Tastendruck zu maximieren / zu minimieren:

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





Auch für mich arbeite ich ohne 'clear && echo TMUX ZOOM && lesen'. Mit diesem Snippet jedes Mal minimiere ich ein Fenster vom ersten Fenster.


1
2018-04-20 12:21





Für diejenigen, die nicht mit tmux 1.8 gehen können oder einen längeren maximierten Zustand bevorzugen, habe ich ein tmux-Skript, das mit tmux 1.6+ funktioniert.

Ich hoffe, das hilft.


0
2018-05-05 21:53