¿Cómo puedo ver el texto 'hombre' después de dejar el hombre?

16

Normalmente uso tcsh o bash y a menudo quiero usar 'man' para revisar las opciones de un comando. Actualmente, cuando salgo de man o ctrl-C, el texto man desaparece y veo el búfer de desplazamiento que estaba allí antes de ejecutar el comando 'man'. Todavía me gustaría ver el texto 'man' que estaba viendo como referencia mientras escribo el comando en el símbolo del sistema sin abrir una segunda ventana, ¿cómo puedo hacer eso?

Sol
fuente

Respuestas:

17

Este comportamiento proviene de la función de "pantalla alternativa" incluida en algunos terminales (hardware) y la mayoría de los emuladores de terminal (software). Lo que sucede es que algunos programas compatibles con terminales cambian a la 'pantalla' alternativa para hacer su trabajo y vuelven a la 'pantalla' normal cuando se los cierra (salir, suspender, etc.). Esto efectivamente elimina el resultado final de tales programas.

Una búsqueda en la web para “terminfo prevent altscreen” proporcionó una página que discute el 'problema' de la pantalla alternativa y varias soluciones .

Como se describe en esa página vinculada, algunos programas se pueden configurar para evitar el uso de la pantalla alternativa. La -Xopción por menos es una forma indirecta de hacerlo. Vim se puede configurar de manera similar desarmando las variables t_tiy t_te.


Una solución con un alcance más amplio es editar la entrada terminfo para su terminal para que no incluya las secuencias de control de pantalla alternativas. Las entradas terminfo forman una base de datos que le dice a los programas qué secuencias de control enviar a un terminal para crear ciertos efectos (mover el cursor, borrar la pantalla, borrar parte de la línea actual, etc.). Al editar la entrada de terminfo que usa su terminal, puede hacer arreglos para 'descuidar' a todos los programas que usan terminfo que las secuencias de control de "pantalla alternativa" existen.

De la lista de secuencias de control para xterm , podemos ver que las secuencias de control de interés (para emuladores de terminal tipo xterm ) son

  • habilitar pantalla alternativa: ESC [ ? 47 h(del mismo modo para 1047 y 1049), y
  • restaurar la pantalla normal: ESC [ ? 47 l(igualmente para 1047 y 1049).

Es muy probable que estos códigos estén presentes en las variables terminfo smcupy rmcup. Una forma rápida y sucia de eliminar estas variables para su TERM actual podría verse así:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

Este método es bastante burdo y ciertamente no funcionará para todos los terminales, pero probablemente funcionará para la mayoría de los emuladores de terminal similares a xterm . Idealmente, debe investigar los valores en las variables smcupy rmcupde la entrada terminfo para su terminal y editarlos de forma conservadora para evitar el comportamiento no deseado. La página de discusión / solución vinculada anteriormente tiene un archivo terminfo "precocinado" que puede usar en lugar de hackear el suyo (pero ¿cuál es la diversión?).

Chris Johnsen
fuente
10

Es necesario establecer $MANPAGERque /usr/bin/less -isX, en sustitución de la ruta donde lessse encuentra como sea necesario. La parte importante es la -X; el -ises el conjunto predeterminado pasado a menos.

Ignacio Vazquez-Abrams
fuente
9

Suponiendo que su buscapersonas es less, configure la variable de entorno LESSpara incluir "X". Por ejemplo el mío es:

LESS="-iMFXRj4a"

Puedes configurar esto en tu ~/.bashrcarchivo

export LESS="-X"

e incluya cualquier otra opción que tenga y agregue las que desee.

Pausado hasta nuevo aviso.
fuente
4

Otro truco, menos elegante que las otras respuestas, es:

man what | more

(Al menos, esto funciona en MacOS X, que generalmente es lo suficientemente similar para que sea válido).

Jonathan Leffler
fuente
1

hombre que | más

Esto funciona bien (Fedora).

Sumanta
fuente