¿Cómo escondes un panel tmux?

60

Tengo 3 paneles en mi ventana tmux:

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------

Los paneles 1 y 2 tienen vim. El panel 3 ejecuta un cli que estoy desarrollando. A veces quiero comparar los paneles 1 y 2, así que quiero ocultar el panel 3:

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------

y luego vuelva a traer el panel 3. No quiero matar el panel 3, ya que he configurado algunas cosas allí y no quiero ir a configurarlas nuevamente.

  • ¿Hay algo similar a lo PREFIX + zque puede hacer zoom en el panel 2 pero sin tocar el panel 1? O
  • ¿Hay alguna forma de ocultar el panel 3 rápidamente y recuperarlo cuando sea necesario?
usuario881300
fuente

Respuestas:

71

Usa los comandos break-paney join-pane. Consulte para man tmuxobtener detalles, opciones y uso.


Ocultar panel 3:

Seleccione el panel 3e ingrese Prefix- :break-pane -dP.

tmuxenviará el panel 3a una ventana en el fondo (la -dbandera) e imprimirá alguna información al respecto en el panel 2 (la -Pbandera). Por defecto verá algo como 1:2.0(que significa:) session:window.pane. Presiona qpara seguir trabajando. 1

1 Con un poco de práctica, podrá soltar el -Pindicador ya que puede predecir el session:window.panetriplete: el valor sessionpredeterminado de la sesión actual y el valor panepredeterminado de 0while windowserá el siguiente identificador de ventana libre.

Recupere el Panel 3:

Para recuperar el panel 3y el diseño, seleccione el panel 2y emita el problema Prefix, :join-pane -vs 1:2.0indicando tmuxdividir el panel 2verticalmente ( -v) y unir el panel (fuente) ( -s) con el identificador 1:2.0. Opcionalmente, puede soltar el sessiono el paneidentificador. Tenga en cuenta también que tmux almacena un historial de línea de comandos, convenientemente accesible con Prefix- :- Up.

Probablemente necesitará algo de tiempo para acostumbrarse, pero una vez que lo haga, seguramente podrá encontrar combinaciones de teclas personalizadas que sean convenientes para usted.


Esta pregunta contiene información útil y trucos que podrían mejorar su flujo de trabajo.

usuario78291
fuente
¡Instrucciones claras! ¡Funciona sin problemas para mí, mucho mejor que mi respuesta!
Bernhard
Por defecto, el panel 3 se dividirá en la última ventana, si ya tiene 3 ventanas en la sesión actual, el panel se convertirá en la Ventana 3 (suponga que la ventana comienza desde 0), por lo que el 3 en "Ventana 3" depende de las ventanas abiertas, ¿cómo puedo hacer que esto funcione en las combinaciones de teclas personalizadas?
CodyChan
5

Una idea: ejecutar tmux en tmux.

Configuración original:

Panel 1 y panel 2; lado a lado. Ejecute vim en el Panel 1 como de costumbre.

En el panel 2, ejecute tmux nuevamente y cree dos paneles (uno encima del otro esta vez). Luego ejecute vim en el panel 2.1 y su CLI en el panel 2.2. Esto debería permitirle acceder al panel 2.1 de pantalla completa con su segunda instancia de Vim, lo que da como resultado el comportamiento que desea.

BinaryBen
fuente
¡Esto es lo que yo llamo pensar fuera de la caja!
user881300
Gracias usuario881300. Tiene algunos defectos (poder enviar comandos tiene algunas peculiaridades, por ejemplo). Espero actualizar esto en una respuesta más completa una vez que lo haya probado: necesito una funcionalidad similar.
BinaryBen
2
@ user881300 Técnicamente, este es un cuadro en el cuadro de pensamiento.
Mateen Ulhaq
3

En lugar de ocultar el panel 3, también puedes hacer un poco de trampa y hacerlo muy pequeño, lo que probablemente también funcione para tu caso.

Cuando el panel 2 es el panel activo, puede

PREFIX : resize-pane -D 40

Luego, para subirlo de nuevo, puedes

PREFIX : resize-pane -D 28

donde tendría que reemplazar 28 con un número decente, o, en su lugar, podría intentarlo PREFIXEsc4, lo que hace un cambio de tamaño automático.

Bernhard
fuente
Estaba cambiando el tamaño del panel usando, set -g mouse-resize-pane onpero aparte del cambio de tamaño, ¿tenemos alguna otra opción?
user881300
@ user881300 No soy un tmuxexperto de ninguna manera, pero me gustaría saber si esto es posible.
Bernhard
1
CTRL+B, ALT+<arrow direction to resize>, que CTRL+B, ESC, 4(thx @Bernhard) para restaurarlo.
FelikZ
1

Ahora esta pregunta tiene casi 5 años, pero la encontré porque quería hacer algo similar y se me ocurrieron las siguientes combinaciones de teclas gracias a la respuesta del usuario 78291 :

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1

De esta manera, puedo usar Prefix!para ocultar el panel actual y Prefix@recuperarlo. Lo bueno es que puedo ocultar múltiples paneles de esta manera.

Está lejos de ser perfecto, pero hace el trabajo de ocultar paneles y traerlos de vuelta bastante bien.

Beso filipe
fuente
0

Sé que esto en realidad no oculta el panel en el que está trabajando, pero estaba tratando de hacer esto para evitar que tmux envíe comandos comunes a las ventanas seleccionadas y obtuve una solución mucho más simple.

Si no desea ocultar visualmente el panel pero solo desea detener cualquier entrada que vaya al panel. Un escenario podría ser que desee enviar un comando a 5 paneles abiertos, pero no desea enviarlo a 2 de ellos.

En este caso de uso, puede hacer ctrl + sen los paneles a los que no desea que vayan los comandos ( ctrl + sbloquea todas las entradas al panel).

Una vez que haya terminado, presione ctrl + cpara volver a salir.

Nota : No presione ctrl + qdespués de los comandos, ya que ejecutará todos los comandos en esa pantalla. ctrl + cno hará esto (probé esto en Ubuntu).

Jon Skeet falso
fuente