comando 'menos' borrando la pantalla al salir: ¿cómo desactivarlo?

79

¿Cómo forzar al lessprograma a que no borre la pantalla al salir?

Me gustaría que se comporte como un git logcomando:

  • deja la página recientemente vista en la pantalla al salir
  • no sale lessincluso si el contenido cabe en una pantalla (prueba git log -1)

¿Algunas ideas? No he encontrado lessopciones adecuadas ni variables env en un manual, aunque sospecho que está configurado a través de alguna variable env.

Wojciech Kaczmarek
fuente
Presumiblemente, necesita el aspecto de desplazamiento de less, por morelo que no sería adecuado.
Svend

Respuestas:

95

Para evitar lessborrar la pantalla al salir, use -X.

Desde la página del manual:

-X o --no-init

Inhabilita el envío de las cadenas de inicialización y desinicialización de termcap al terminal. Esto a veces es deseable si la cadena de desinicialización hace algo innecesario, como borrar la pantalla.

En cuanto a salir menos si el contenido cabe en una pantalla, esa es la opción -F:

-F o --quit-if-one-screen

Hace que salga menos automáticamente si se puede mostrar todo el archivo en la primera pantalla.

-Fsin embargo, no es el predeterminado, por lo que es probable que esté preestablecido en algún lugar para usted. Verifique la var LESS.

sleske
fuente
¡Excelente! -X es lo que tenía en mente.
Wojciech Kaczmarek
77
Esto es especialmente molesto si lo sabe, -Fpero no -X, ya que luego pasar a un sistema que restablece la pantalla en init hará que los archivos cortos simplemente no aparezcan, sin razón aparente. Esto me mordió ackcuando intenté llevar mi ACK_PAGER='less -RF'configuración a la Mac. ¡Gracias un montón!
markpasc
@markpasc: Gracias por señalarlo. No me habría dado cuenta de que esta combinación causaría este efecto, pero ahora es obvio.
sleske
77
Esto es especialmente útil para el buscapersonas man, para que las páginas man no desaparezcan tan pronto como salga menos con la tecla 'q'. Es decir, se desplaza a la posición en una página de manual que le interesa solo para que desaparezca cuando salga del buscapersonas para usar la información. Entonces, agregué: export MANPAGER='less -s -X -F'a mi .bashrc para mantener la información de la página del manual en la pantalla cuando dejo de fumar, para que pueda usarla en lugar de tener que memorizarla.
Michael Goldshteyn
2
Es una lástima que tengas que decidir cuándo comienzas lesscómo debe comportarse cuando vas a salir.
Michael Burr
17

Si desea que cualquiera de las opciones de la línea de comandos sea siempre predeterminada, puede agregar a su .profile o .bashrc la variable de entorno MENOS. Por ejemplo:

export LESS="-XF"

siempre aplicará -X -F siempre que se ejecute menos desde esa sesión de inicio de sesión.

A veces, los comandos tienen un alias (incluso de forma predeterminada en ciertas distribuciones). Para verificar esto, escriba

alias

sin argumentos para ver si se alias con opciones que no quieres. Para ejecutar el comando real en su $ PATH en lugar de un alias, solo prefacio con una barra diagonal inversa:

\less

Para ver si una variable de entorno MENOS está configurada en su entorno y afecta el comportamiento:

echo $LESS
Derek Douville
fuente
2
De hecho, agrego export LESS="-XFR"para que los colores lesstambién se vean.
dotancohen
2
¡Gracias por eso! -XFpor sí solo estaba rompiendo la salida de git diff, y -XFRobtiene lo mejor de ambos mundos: sin borrado de pantalla, sino git diffsalida en color .
Giles Thomas
1

O simplemente configúrelo en su configuración global de git:

git config --global core.pager 'less -FX'

De esta manera, otras herramientas no se ven afectadas (lo que me gusta).

Lester Cheung
fuente