Use la barra de desplazamiento del terminal con tmux

41

Sé cómo desplazarme en tmux usando el teclado, pero noté que parece que hay una manera de usar la barra de desplazamiento del terminal con la pantalla GNU . ¿Se puede hacer esto con tmux?

Jeff
fuente
66
Realmente no puedes usar la barra de desplazamiento del terminal con la pantalla GNU. La barra de desplazamiento no accederá realmente al búfer de desplazamiento hacia atrás de la pantalla, sino a la terminal, lo que significa que las líneas desplazadas de diferentes sesiones de pantalla se mezclan.
ak2
@ ak2 Tristeza ... pero gracias por la información!
Jeff
2
iTerm2 tiene algunos planes futuros para [integrarse con tmux ] ( code.google.com/p/iterm2/wiki/TmuxIntegration ). Es probable que dicha integración incluya el uso de una barra de desplazamiento nativa para ver elbúfer de historial de tmux .
Chris Johnsen

Respuestas:

42

Esto es posible tanto en la pantalla GNU como en tmux y la solución es similar: engañar a los multiplexores para que piensen que el terminal no tiene modo de "pantalla alternativa" (como el utilizado por pico, mutt, etc.). Esto se logra estableciendo comandos termcap para la sesión.

Para la pantalla GNU, pon esto en tu .screenrc:

termcapinfo xterm*|xs|rxvt|terminal ti@:te@

y para tmux, agregue esto a su .tmux.conf:

set -ga terminal-overrides ',xterm*:smcup@:rmcup@'

La parte ' xterm*' del comando debe establecerse en cualquiera que sea su terminal-emulador declarado. Alguna forma de xterm es una buena suposición, pero puede verificar la suya en la mayoría de los sistemas sanos * nix con:

echo $TERM

y esto generalmente se puede configurar en las preferencias de su programa de terminal (es decir: para Apple Terminal.app, está en Configuración-> Perfil-> Avanzado (o Configuración-> Avanzado-> Emulación pre-yosemite) "Declarar terminal como".

El resultado final es que el desbordamiento termina en el búfer de desplazamiento del terminal en lugar de desaparecer. Por supuesto, dado que este es un búfer estático, las cosas se complicarán al cambiar entre la pantalla o las ventanas tmux, pero esto es útil para desplazarse rápidamente para ver la salida de un lscomando o tal.

Doug J
fuente
2
Además, acabo de ver superuser.com/questions/253414/… , que funciona como se describe como otra alternativa.
Doug J
2
Solución: gist.github.com/1297707
Nick
1
@Nick: tenga en cuenta que está resolviendo un problema diferente: agregando compatibilidad con mouse a tmux. Puede ser una mejor solución para usted, pero es diferente de usar el búfer de desplazamiento nativo. Mientras su emulador de terminal esté correctamente definido, lo anterior funcionará en un y * nix, incluido OSX
Doug J
1
Parece que fue un tcsh incorporado. En bash puedes usarecho $TERM
Doug J
1
este "desbordamiento" funciona pero muestra algunos caracteres Unicode extraños al salir de tmux: stackoverflow.com/q/31790939/2668831
Louis Maddox
5

Para habilitar el desplazamiento, puede habilitar el modo de mouse incorporado de la ~/.tmux.confsiguiente manera:

set -g mode-mouse on
Shubham Chaudhary
fuente