
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_ti
y t_ks
al terminal cuando se inicia una sesión y t_te
cuando t_ke
finaliza. Las secuencias t_ti
y t_te
hacen que el terminal cambie a su pantalla alternativa.
En tu ~/.vimrc
archivo puedes vim
dejar 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_profile
archivo 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 screen
sesió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 screen
tiene 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