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

14

Estoy tratando de averiguar qué es una función bash (o vim). Aquí está el escenario. Estoy en una terminal de bash, luego edito algo con vim, luego salgo de nuevo a bash. En algunos terminales, la pantalla de sesión vim desaparece para mostrar la actividad previa de bash shell (¿esto es lo que quiero?).

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

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

Gracias Tim

Comunidad
fuente
superuser.com/questions/871170 está relacionado.
JdeBP

Respuestas:

10

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

En su ~/.vimrcarchivo, puede 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 del terminal anterior aparezca cuando salga vim.

Pausado hasta nuevo aviso.
fuente
4

Una causa de este problema puede ser usar el 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 screen / vim en Ubuntu 15.10. Supongo que por la misma causa descrita anteriormente, screentiene una tapa de término diferente.

teknopaul
fuente
2
Agregar altscreen onal archivo ~ / .screenrc resuelve el problema de la pantalla.
BartBiczBoży
3

Simplemente agregue una línea a su ~/.bash_profilearchivo para exportar TERM como xterm cada vez que inicie sesión. Haz 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 ...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile
ekerner
fuente
1
no sería eso export $TERM?
chrsblck
1
@chrsblck: No, porque exportexporta el nombre (por ejemplo, TERMen este caso) como una variable de entorno en lugar de una variable local. Si usó export $TERMen este ejemplo, la $TERMvar se resolvería y xtermestablecería la var env $xterm, que probablemente no esté definida. Buena pregunta, siempre me parece mal también.
ekerner
2

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

Usted dice "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 la caja de Linux de mi casa, tengo gnome-terminal, xterm, Konsole, yakuake, y probablemente algunos más que he olvidado, junto con los "terminales virtuales" asociados con el ctrl-alt-F1 ... ctrl-alt-F6 más o menos. La mayoría de estos pueden funcionar con la entrada de termcap "estándar" para "xterm", excepto los terminales virtuales que tienen una definición de terminal llamada "linux".

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

¡Espero que ayude!
-pbr

pbr
fuente
1

Esto tiene que ver con su terminal y la configuración de su máquina relacionada con la información del terminal. Una solución portátil es usar GNU Screen. Abra una ventana para Vim y otra para Bash, separando así las dos sesiones. Si está utilizando un terminal gráfico como xterm en X11, Gnome Terminal en Gnome o Terminal.app en OS X, puede abrir una nueva ventana o pestaña para obtener el mismo efecto.

Wilhelmtell
fuente