¿Hay alguna forma de salir de "menos" sin borrar la pantalla?

68

Con relativa frecuencia, me encuentro con ganas de dejar de fumar, lesspero dejar lo que estaba viendo en la pantalla, para consultar. ¿Hay alguna forma de hacer esto? Soluciones alternativas?

(Mi solución actual es dejar de fumar y luego usar more. Por lo tanto, cualquier solución que sea mejor que eso es bienvenida. Lo ideal sería algo que pueda usar una vez que ya esté dentro less, tal vez con una configuración de shell o alguna secuencia de comandos).

Mi escritorio es OSX, pero uso los servidores RHEL y Ubuntu.

Steve Bennett
fuente
1
Leer una salida larga (como en git diffo git log) en less -Xtomará el búfer de desplazamiento en mi terminal y desalojará gran parte de la salida anterior. Me encantaría si lesspudiera salir con la última pantalla llena de salida en el momento de la salida; es decir, no se tomará más de una página del búfer de desplazamiento después de salir less. ¿Algunas ideas?
musiphil
Por cierto, -Rsuele ser una opción más segura que -r.
musiphil
Gracias. Para aquellos que se preguntan:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett
@musiphil Quizás -c?
Vanessa Phipps
@MatthewPhipps: supongo que -cse trata de cómo actualizar la pantalla cuando te mueves dentro less.
musiphil

Respuestas:

68

Esta es en realidad una función del emulador de terminal que está utilizando (xterm, gnome-terminal, konsole, screen). Una pantalla alternativa, o altscreen, se inicia cuando se invocan programas como lesso vim. Esta pantalla alternativa no tiene búfer de historial y se cierra inmediatamente cuando sale del programa, volviendo a la pantalla original que restaura el historial y la ubicación del contenido de la ventana anterior.

Puede evitar que se lessinicie en una pantalla alternativa pasando el argumento "-X".

less -X /path/to/some/file

También puede pasar "-X" como variable de entorno. Entonces, si está utilizando bash, coloque esto en ~/.bashrc:

export LESS="-X"

Sin embargo, esto deshabilita la inicialización y la desinicialización de termcap (capacidad de terminal), por lo que lesspueden aparecer otras vistas cuando se usa .

Otra opción sería usar screeny configurar la opción altscreen offen su ~/.screenrc. lessno borrará la pantalla y debería conservar el formato de color. Presumiblemente tmuxtendrá la misma opción.

Esta entrada del blog describe el problema y ofrece algunas soluciones diferentes específicas para cada gnome-terminaléxito.

George M
fuente
2
Perfecto. ¿Hay un inconveniente?
Steve Bennett
2
Espera, ya he descubierto uno: la salida de git log(y probablemente otros comandos de colores) está en mal estado.
Steve Bennett
1
@SteveBennett Eso es lo suficientemente pequeño, lo convertiría en un alias:alias les="/usr/bin/less -X"
bonsaiviking
44
Hey, creo que acabo de descubrir un antídoto a la git logcuestión anterior: export LESS="-r -X". (No tengo idea de cuáles son los efectos secundarios de eso ...)
Steve Bennett
55
En realidad, gitestablece la LESSvariable en FRSXsi no está establecida cuando ejecuta el buscapersonas, por lo que puede dejarla sin establecer LESSy lessse ejecutará automáticamente con -FRSX. Busque core.pageradentro git-config(1)para más información.
musiphil
4

La solución de George no funcionó para mí, pero esta solución sí (de la entrada del blog vinculada en su respuesta).

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. Editar ~ / xterm-noclear.src

    • cambie el nombre en la segunda línea de 'xterm' a 'xterm-noclear', o lo que le convenga (también cambie 'xterm-debian' si está presente)

    • elimine las instrucciones 'smcup' y 'rmcup' (por ejemplo, "smcup = \ E [? 1049h," y "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear debería aparecer en su directorio ~ / .terminfo)

  5. $ export TERM=xterm-noclear (ahora verifique el comportamiento de less y, si está satisfecho, agregue la línea de directiva de exportación a su ~ / .profile)

(Copié estas instrucciones directamente de la edición rechazada de @ jah de la respuesta de George).

prl
fuente
4

La forma en que recuerdo esto es less -SEXcuando necesito volcar la salida a la pantalla pero no quiero que las líneas se ajusten. Por ejemplo, docker ps | less -SEXlo que hace es esto:

  • -S
    • Desplazarse en lugar de envolver
    • Si suelta el -E, puede usar las teclas de flecha para desplazarse
  • -E
    • Salga cuando llegue al EOF
  • -X
    • Evitar el intercambio de términos / supresión
    • La parte de "memoria" es que sé lo que hace S y E, así que esta debe ser la otra parte. (Y nuestra razón para enviar este comando a la memoria es que queremos volcar la salida sin envolver (no ingresar a una sesión interactiva).

Si no puedes recordar less -SEX, no hay mucha esperanza para ti. Simplemente vuelve a google cada vez que supongo.

Bruno Bronosky
fuente
¿El tipo tiene un problema y le ofreces menos sexo?
yossico