Tengo un problema que surge cuando uso la Terminal de Mac OS X (TERM = xterm): a veces se pone en un estado donde las líneas que se desplazan desde la parte superior no se agregan al búfer de desplazamiento hacia atrás. No estoy usando screen
o similar; Este es un shell bash simple dentro de una pestaña Terminal.
No hace esto inmediatamente después de abrir una nueva pestaña. Creo que es un efecto secundario de algo que he ejecutado en la pestaña del problema. Supongo que tiene algo que ver con la emulación xterm, posiblemente la región de desplazamiento.
Lo que no ha funcionado:
- Restablecimiento parcial y completo a través del menú Shell
- Corriendo
reset
en la pestaña
¿Hay alguna forma confiable de restablecer la Terminal y / o el estado xterm?
¿Alguien puede dar una explicación de lo que está sucediendo, incluso si la única solución es cerrar la pestaña y abrir una nueva?
Respuestas:
Esto significa que el terminal está utilizando el búfer de pantalla alternativo. Hay una pantalla principal, que se desplaza hacia el registro de desplazamiento hacia atrás, y una pantalla alternativa que no lo hace. Los programas de "pantalla completa" u "orientados a la pantalla" como top, less, emacs, vim y screen cambian el terminal a la pantalla alternativa de forma predeterminada.
Cada pantalla tiene su propio contenido y estado. Tener una pantalla alternativa permite que los programas se hagan cargo de toda la pantalla, luego restauren los contenidos anteriores cuando salgan, volviendo a la pantalla principal.
A partir de Mac OS X Lion 10.7, Terminal tiene un elemento de menú que puede usar para cambiar manualmente las pantallas:
Esto se proporciona principalmente para que pueda ver o copiar texto desde la pantalla alternativa después de que salga un programa de "pantalla completa". Xterm tiene un comando similar.
También puede usarlo para forzar manualmente a un programa a usar una pantalla en particular, para controlar si la salida va al registro de desplazamiento, por ejemplo. Sin embargo, si actualmente está utilizando un programa que cambia explícitamente a la pantalla alternativa, puede confundirlo u obtener resultados inesperados si lo fuerza a la pantalla principal mientras el programa se está ejecutando, así que use esto con precaución.
Dependiendo del programa, puede tener un argumento de línea de comando o algún otro medio para configurarlo para usar la pantalla principal. por ejemplo,
less -X
.Algunas entradas terminfo están diseñados específicamente para suprimir el uso de la pantalla alterna, por ejemplo,
xterm1
.TERM=xterm1 emacs
ejecutará Emacs en la pantalla principal. No recomiendo usar de formaxterm1
permanente, ya que deshabilita una serie de otras características útiles en comparación con el valor predeterminadoxterm-256color
en Lion.También puede cambiar de pantalla usando el
tput
comando para emitir las secuencias de escape desde el interior de un shell o script.tput smcup
cambia a la pantalla alternativa ytput rmcup
vuelve a la pantalla principal.Para ver qué programa se está ejecutando actualmente, mire el nombre del programa que se muestra en la ventana Terminal o el título de la pestaña, o mire la ventana Inspector ( Shell> Mostrar inspector ). El último proceso en la lista en el Inspector es (generalmente) el programa actual que usa la pantalla. Ese es el que necesitará configurar para usar la pantalla principal.
fuente
tput rmcup
ssh
sesión en una máquina remota falló (¿se agotó el tiempo?) Mientras estaba dentrovi
, aparentemente dejando el terminal en la pantalla alternativa (porquevi
nunca tuve la oportunidad de limpiar). A partir de entonces, cualquier nuevassh
sesión en el mismo terminal exhibiría el problema descrito por el OP, hasta que resolviera el problema seleccionando el elemento de menú Ver> Ocultar pantalla alternativa .