reflejando un panel entre dos ventanas

14

¿Es posible que aparezca el mismo panel en dos ventanas diferentes de una sola sesión tmux?

Por lo general, tengo una sola división horizontal en mi ventana principal con vim en el panel superior (aproximadamente el 80-90% de la altura del terminal) y una línea de comando en el panel inferior donde ejecuto el programa en el que estoy trabajando. Debido a que la ventana inferior es tan pequeña, a menudo no puedo ver la salida de error, y usar los atajos de teclado de tmux para desplazarse hacia atrás es cansador. Me gustaría que mi segunda ventana se adjunte al mismo panel para que si necesito ver más de mi salida de error, pueda cambiar rápidamente a la segunda ventana sin tener que lidiar con el desplazamiento hacia atrás. es posible?

(Supongo que una desventaja sería usar algo como tee para escribir stdout en un archivo de registro y cola en mi segunda ventana. Espero que eso no sea necesario)

Will Norris
fuente

Respuestas:

7

De manera predeterminada, puede alternar el "estado de zoom" de un panel presionando Prefixy z(el prefijo predeterminado es Ctrl+B).

Esto hará que el panel actual (su panel de línea de comando, por ejemplo) ocupe toda la ventana. Presione Prefixy zotra vez para "desacoplar" el panel.

Kusalananda
fuente
10

Me temo que esta es una de las cosas con las que no puede hacer tmux(esperaría que los problemas con un panel que se muestra en varios espacios de diferentes tamaños sea la razón principal). Sin embargo, hay varias formas de evitarlo, todas basadas en vincular ciertas acciones a algunas combinaciones de teclas. Ya que mucho depende de la disposición que está utilizando, acaba de tener un diseño simple con dos paneles que está mencionar es hacer su vida mucho más fácil

  1. rotate-window - solo cambiará los paneles, lo que le dará un 80% -90% para la salida del comando (y la pequeña ventana para ViM).

  2. break-pane vs. join-pane -v -p <preview_percentage> -t !

  3. pipe-panecon la commandredirección sin búfer a una tubería con nombre (es decir, un nodo del sistema de archivos creado con mkfifo), luego use tail -fesa tubería con nombre en el otro panel.

  4. canalizar la salida a less, que también tiene el modo de seguimiento que tailtiene (al menos el GNU).

  5. resize-pane -Zen el panel más pequeño lo ampliará en el terminal completo. Posteriormente, el zoom desactivado lo mantendrá activo, por lo que se necesita un poco de truco para que funcione cómodamente.

Peterph
fuente
2
Por cierto: "Esperaría que los problemas con un panel que se muestra en varios espacios de diferentes tamaños sea la razón principal" Eso podría ser un factor en la complejidad de implementarlo, pero tmux admite lo mismo a nivel de ventana, a través de agrupados sesiones unix.stackexchange.com/questions/24274/… . Simplemente agrega relleno debajo a la ventana más pequeña. Teóricamente, la duplicación de paneles podría hacerse de la misma manera.
mahemoff
Hm ... tienes razón, esa podría ser una forma de hacerlo.
Peter
1

Puede usar un script para enviar su pseudo sesión a un archivo y luego tailese archivo en una segunda ventana.

En tu panel de trabajo.

script -f tailme.out

Y en su panel de visualización.

tail -f tailme.out
slimisjim
fuente
1

Estoy de acuerdo con otros en que para su caso Prefix+ zsería la solución más directa, pero para la cuestión general de duplicar un panel hay un truco que podría funcionar: anidar una sesión de pantalla dentro de tmux.

Instale la pantalla gnu, luego iníciela para el panel que desea reflejar. Luego screen -xpara adjuntar en otros paneles.

También puede anidar otra sesión de tmux en el panel si lo desea, pero las sesiones de tmux deben anidarse con cuidado.

Mateo
fuente