¿Cómo reemplazar el búfer de pantalla de vim con la actividad de bash anterior después de salir?

¿Cómo reemplazar el búfer de pantalla de vim con la actividad de bash anterior después de salir?

Estoy intentando descubrir qué es una función bash (o vim). Este es el escenario. Estoy en una terminal bash, luego edito algo con vim, luego salgo de nuevo a bash. En algunas terminales, la pantalla de sesión de vim desaparece para mostrar la actividad anterior del shell bash (¿esto es lo que quiero?).

En otros, el búfer de pantalla de la sesión de vim permanece (ocultando la antigua actividad del shell bash). Tendré que borrar la pantalla o esperar hasta que mi actividad de bash saque el búfer de sesión de vim de la pantalla.

¿Cómo puedo controlar este comportamiento para reemplazar el búfer de sesión de vim con la actividad de bash anterior?

gracias tim

Respuesta1

Vim envía t_tiy t_ksal terminal cuando se inicia una sesión y t_tecuando t_kefinaliza. Las secuencias t_tiy t_tehacen que el terminal cambie a su pantalla alternativa.

En tu ~/.vimrcarchivo puedes vimdejar el documento en pantalla cuando salga incluyendo esta línea:

set t_ti=""

Si tiene una línea similar a esa, eliminarla debería hacer que el contenido anterior del terminal aparezca cuando salga vim.

Respuesta2

Simplemente agregue una línea a su ~/.bash_profilearchivo para exportar TERM como xterm cada vez que inicie sesión. Haga lo siguiente;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

Ahora, la próxima vez que inicie sesión, su problema se solucionará y, si no desea volver a iniciar sesión, puede hacer una de las siguientes opciones:

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

Respuesta3

Una causa de este problema puede ser el uso del programa screen. Encuentro que cuando estoy en una screensesión vim no puede devolver el estado del terminal.

No estoy seguro si es específico de la pantalla o del combo pantalla/vim en Ubuntu 15.10. La misma causa descrita anteriormente, supongo que screentiene un límite de termino diferente.

Respuesta4

Tim. Ambas respuestas anteriores son correctas. Vim cambia el terminal a una "pantalla alternativa" si la capacidad para hacerlo está definida en la entrada termcap para $TERM.

Dices "en algunas terminales (...funciona bien...)" y "en otras (...funciona mal...)"

¿Está ejecutando exactamente el mismo emulador de terminal para todos esos terminales?

Por ejemplo, en mi Linux doméstico, tengo gnome-terminal, xterm, Konsole, yakuake y probablemente algunos más que he olvidado, junto con los "terminales virtuales" asociados con ctrl-alt-F1... Ctrl-Alt-F6 más o menos. La mayoría de ellos pueden funcionar con la entrada termcap "estándar" para "xterm", excepto los terminales virtuales que tienen una definición de terminal denominada "linux".

Verifique el emulador de terminal y el valor de $TERM en terminales que funcionan y en los que no, para ver qué es diferente. Además, si a veces inicia sesión como un usuario diferente, ese podría ser el meollo del problema: dado que cada usuario tiene su propio .bashrc, varias configuraciones pueden diferir de un usuario a otro.

¡Espero que ayude!
-pbr

información relacionada