Pregunta "Maximizar" un panel en tmux


A veces sería muy útil maximizar un panel en tmux y luego restaurarlo a su tamaño anterior.

He estado leyendo el manual y no puedo encontrar la manera. Lo que se me ocurrió es que podía vincular una clave para redimensionar el panel al ancho "máximo" y otra clave para restaurarla a un ancho predefinido.

Por supuesto, esto tiene sus desventajas, así que me pregunto si alguien tiene una mejor idea.


194


origen




Respuestas:


Otra opción podría ser usar break-pane seguido por join-pane. Desde el página man:

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.

Para que pueda seleccionar su panel y hacer break-pane y una vez que termines con la versión maximizada, podrías volver a unirte a ella join-pane - podría necesitar algunos argumentos predeterminados para volver a colocarlo en su lugar, o simplemente reorganizar después.

Tenga en cuenta que join-pane parece estar en tmux 1.3 pero no 1.1. (No estoy seguro acerca de 1.2, lo siento).

Y solo por mencionar eso terminador (un multiplexor de terminal GUI (basado en GTK)) puede hacer el zoom. (Ctrl-Shift-X es la combinación de teclas predeterminada). Por supuesto, no hace muchas cosas que tmux hace ...


49



A partir de la versión 1.8 hay una mejor solución (ver la respuesta de Tyler Holien). - momeara
Para aquellos que prueban esto antes de la mejor respuesta, para hacer que join-pane funcione, haga lo siguiente: join-pane -t:{previous} para la ventana anterior o join-pane -t:0 para unirlo a la ventana 0. - Realistic


Esta es ahora una función nativa de tmux.

La versión 1.8 vio la adición del -Z bandera para resize-pane. Desde la página man:

Con -Z, el panel activo se alterna entre ampliar (ocupando el   toda la ventana) y unzoomed (su posición normal en el diseño).

Está destinado a tmux-prefix-z por defecto en mi instalación (a través de Homebrew en OS X).


409



alguien con privilegios adecuados debería hacer de esto la respuesta. Es inconcebible que alguien todavía esté usando una versión de tmux que no sea la última. - Jay
esto fue genial, solo se agregó a mi .tmux.conf y ahora tengo una experiencia mucho más fluida: bind-key z resize-pane -Z - St-Ste-Ste-Stephen
¿Es posible de alguna manera tener los bordes de los paneles sumergidos visibles para la indicación de profundidad? Sigo olvidando que estoy haciendo un acercamiento y que el "Z-title" no es lo suficientemente prominente. - lkraav
Funciona en BunsenLabs fuera de la caja. - Mateusz Piotrowski
"INCONCEVIBLE" - "Sigues usando esa palabra. No creo que signifique lo que piensas que significa". - Michael Anderson


Así que sé que preguntaste esto hace un tiempo ... ¡pero no cambié de pantalla hasta hoy!

Me encontré con el mismo problema, así es como lo resolví:

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

Si tu flujo de trabajo es como el mío (es decir, si maximizas una ventana, trabajas un poco, y luego la bajas de inmediato), esto debería funcionar bien para ti.


47



(En caso de que no esté claro, esto mantiene el diseño en la ventana original ... después de maximizar y des-maximizar, es exactamente lo mismo). - Ryan
¿Alguna idea de cómo podría asignar la misma pulsación de tecla a ambos? Algo como bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>. Pero ahora quiero definir esta función en otro lugar, por el bien de la limpieza, y solo bind c-m :max_or_min. ¿Es eso posible? Me resulta difícil buscar (Encuentro que a menudo presiono el comando incorrecto y termino creando ventanas adicionales y vacías de 'tmux-zoom'). - chadoh
Esto funcionó para mí solo cuando eliminé 'clear && echo TMUX ZOOM && read' de maximizar. - Epeli
Thw maximiza mi trabajo, pero la acción de minimizar simplemente mata la ventana original, dejando el panel maximizado. - paradroid
Este tipo de trabajo funcionó, pero pierdo mi diseño ... ¡casi! - John Hunt


Mejorado zoomer. Ahora uno puede hacer zoom en múltiples paneles, incluso jerárquicamente. Después de hacer lo siguiente y volver a cargar su servidor tmux (Ctrl-r en mi caso) tendrá su X tecla obligada para acercar y alejar un panel. El acercamiento se logra abriendo el panel en una nueva ventana, y se logra un alejamiento al llevar el panel a su ventana original. Si termina dividiendo la ventana de acercamiento, podrá acercarse a los paneles de la ventana de acercamiento y alejarse de la ventana de acercamiento. el alejamiento solo ocurre si se encuentra en una ventana de acercamiento que contiene un solo panel.

Agregue los siguientes al final de su ~/.tmux.conf

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

Agregar el siguiente archivo

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



¿Solo un voto único? ¡Esta respuesta es asombrosa! Funciona muy bien, presenta una nueva y agradable funcionalidad que ahora reemplaza por completo al abrumador programa 'terminator' que solía usar. - sillyMunky
+1 ¡Esto es realmente bueno! ¡Con mucho, la mejor solución de trabajo que he encontrado hasta ahora! ¡¡Gracias!! - armandino
Estoy de acuerdo. Esto funciona, y es más que increíble. Es una pantalla ++ - Brad Parks
+1. Esto funciona bien pero es una fracción de segundo (~ 0.8s) más lento que la respuesta de @ Ryan anterior, al menos en mi sistema. No es gran cosa, pero me pregunto si hay una manera de hacerlo más rápido - Amelio Vazquez-Reina
Hermoso sin duda alguna. Me encantan los nombres especiales de los paneles (zoom @ ...), que son recordatorios útiles, y el único comando "acercar / alejar" de x. - Eric Lebigot


Cntl + b (prefijo) + z funciona para acercarse a un panel particular en tmux 2.1. si presiona Cntrl + b + z otra vez, vuelve a ampliar el panel al tamaño original. No crea un nuevo panel.

En comparación con la solución publicada anteriormente por aksay, si intenta dividir el panel ampliado, no permitirá dividirlo, y volverá al panel original y dividirá dicho panel.

La opción de la ventana de zoom es probablemente más versátil ...


7





Hice esto para maximizar / minimizar con la misma pulsación de tecla:

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





También para mí trabajo sin 'clear && echo TMUX ZOOM && read'. Con este fragmento, cada vez que minimizo un panel de la primera ventana desaparezco.


1





Para aquellos que no pueden ir con tmux 1.8 o prefieren un estado maximizado más largo, publiqué un secuencia de comandos tmux que funciona con tmux 1.6+.

Espero que ayude.


0