Dependiendo del terminal / entorno, la siguiente secuencia tiene diferentes efectos:
$ ls
1
2
$ man ls
enter q
O veo la última pantalla de página de manual que se muestra sobre el indicador actual o la salida ls y la salida de shell anterior se restaura. Se observa el mismo efecto, por ejemplo, cuando se usa vim
y luego se suspende para hacer algo en el shell.
En Fedora 19: el valor predeterminado de la pantalla parece no ser restaurar, un gnome-terminal / xterm usa do-restore por defecto.
En Solaris, depende de la terminal / terminfo db utilizada que parece.
Quiero configurar el comportamiento de restauración de manera consistente entre diferentes sistemas / terminales.
Respuestas:
La característica parece llamarse 'pantalla alternativa' o cambiar entre pantalla normal y alternativa.
Puedes explorarlo usando un xterm. Por ejemplo, escriba
man man
anxterm
y salga de man. Ahora puede cambiar a la pantalla alternativa mediante Ctrl+ Mouse2 (clic central) -> 'Mostrar pantalla alternativa'. Alternativamente, puede ingresar directamente las secuencias de control de xterm , por ejemplo:Los dos últimos comandos también funcionan en gnome-terminal (probablemente también en otros).
Lo que sucede cuando
man
/vi
/less
etc. inicio es básicamente que envían un comando abstracto de pantalla clara. Al salir (o suspender) envían un comando abstracto de restauración de pantalla. La forma en que el comando se traduce en secuencias de control de terminal concretas se define en la base de datos terminfo .Deshabilitar cambio de pantalla alternativo
Lo que debería funcionar para todos los terminales es ajustar las entradas locales de terminal, es decir, eliminar la asignación de comandos abstractos de borrar / restaurar pantalla.
Puede hacerlo así: para la
$TERM
entrada actual (para gnome-terminal en Fedora 19, por ejemplo):Ahora puedes probarlo a través de:
Puede repetir los pasos anteriores para otros terminales si usa varios. Si todo funciona como se espera, puede configurarlo a
TERM
través de su shell rc-file.También puede especificar directamente el nombre del terminal como parámetro para
infocmp
, por ejemplo:Habilitar cambio de pantalla alternativo
Algunos terminales admiten la función alternativa de cambio de pantalla (p . Ej., Pantalla ), pero la desactivan por defecto .
Para
screen
que pueda habilitarlo a través de su~/.screenrc
:Si inicia sesión de forma remota a través de ssh para, por ejemplo, un sistema Solaris, tal vez la base de datos terminfo configurada de forma remota en todo el sistema sea histórica, esté dañada o incluya algunos valores predeterminados inusuales / específicos de Solaris que no coinciden con los terminales 'de última generación' corres ssh adentro.
Por lo tanto, es una opción copiar la base de datos local de terminfo desde / usr / share / info (en el cliente) a
host:~/.terminfo
(en el servidor).En caso de que el formato terminfo compilado no sea compatible, también puede exportar / importar las entradas como en el párrafo anterior.
He intentado con un terminfo-db de una instalación de Cygwin y funcionó copiarlo directamente a un sistema Solaris 10.
En caso de que desee compartir una terminfo db alternativa entre usuarios, especifique su ruta a través de la
TERMINFO
variable de entorno.Ignorar la secuencia de control
Algunos terminales admiten la desactivación de la secuencia de control para el cambio de pantalla alternativo. Por ejemplo, xterm tiene una opción, gnome-terminal no.
Para xterm es la fuente X , p. Ej.
Configuraciones específicas del programa
Algunos programas tienen archivos de configuración para configurar qué secuencia de control / comandos terminfo envían. Por ejemplo
configura
less
para no borrar / restaurar la pantalla.Para
vim
que pueda incluir algo comoen ti
~/.vimrc
.No he encontrado la opción de cómo configurar ese comportamiento para la parte superior; de forma predeterminada, no envía la pantalla de restauración.
fuente
smcup
ormcup
. En mi caso, hay otras cosas que vienen en la misma línea con ellos. Esas otras cosas también se eliminaron. Entonces tal vez algo asís/[sr]mcup=[^,]*,//'
es mejor.