¿Cómo configurar la pantalla bash para que no muestre el texto vim después de salir?

28

Mi pregunta es simple, pero me resulta difícil enmarcarla / explicarla fácilmente.

Me conecto a varias cajas de Unix con diferentes cuentas. Veo 2 cosas diferentes para user1y user2, mientras edito archivos de texto en vim

usuario1

Cuando vim filenameescribo, vim se abre y edito el archivo. Cuando lo cierro, el texto completo del archivo se ha ido, y veo el comando / salida de Teminals que estaba presente anteriormente.

usuario2

Cuando vim filenameescribo, vim se abre y edito el archivo. Cuando lo cierro, la parte del archivo que estaba presente en la pantalla mientras yo estaba vimtodavía aparece en la pantalla, y toda la pantalla de Terminal anterior se desplaza hacia arriba. Incluso si el archivo era solo 1 línea, después de salir de vim, la pantalla muestra la primera línea, con el resto ~y veo el símbolo del sistema en la parte inferior de la pantalla.

Detalles

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

Comparé los vimrcarchivos para ambos usuarios, y conozco todas las configuraciones, y no encuentro ninguna configuración / configuración relacionada con este comportamiento.

¿Está este comportamiento relacionado con la configuración de shell? ¿Cómo configuro las cosas para obtener el comportamiento como se muestra en el user1escenario?

No puedo describir esto fácilmente, también me resulta difícil buscar en Google, ya que no sé qué palabra clave buscar para tal comportamiento. Déjame saber, si debo elaborar más.

mtk
fuente
¿Están user1y user2cuentas en la misma o diferentes máquinas?
jasonwryan
@jasonwryan Iniciar sesión en la misma máquina también muestra el mismo escenario. @ warl0ck Gracias por eso.
mtk
1
Si desea forzar este comportamiento pero retiene su tipo de terminal, agregue una línea a su .bashrc o .profile diciendo alias vi = "/ usr / bin / vi $ *; clear"
Criggie

Respuestas:

24

Una de las razones de ese comportamiento será la configuración del terminal para cada usuario.

Por ejemplo:

  • Usuario1 está utilizando TERM = xterm , en este caso cuando salga de vim, borrará el terminal.
  • Usuario2 está utilizando TERM = vt100 , en este caso cuando salga de vim, no borrará el terminal.

Compruebe con qué terminal está utilizando user1 echo $TERMy configúrelo para user2. para bash:

TERM = xterm; PLAZO DE EXPORTACIÓN

BitsOfNix
fuente
+1 Solución exacta / perfecta. Gracias !!! No pensé que fuera tan fácil. ¿Puedes por favor explicar qué TERMes? o apunta a algún enlace de recursos? Necesito entender esto. ¿Esto afecta solo cuando nos conectamos a través de putty?
mtk
Puede especificar la configuración del terminal en la sesión de masilla, pero los usuarios pueden hacer que especifique en sus variables de entorno. TERM definirá su tipo de terminal y también algunos tendrán más funciones que otros, por ejemplo, xterm admite colores y actualizará las filas y columnas automáticamente. Si usa vt100, su valor predeterminado será 24 filas por 80 columnas cuando cambie el tamaño de su terminal, verá que se adhiere a 24x80. Consulte este unix.stackexchange.com/questions/43945/… , podría explicarlo mejor que yo.
BitsOfNix
Es el comportamiento terminal, no el shell. La configuración del emulador de terminal es la misma, independientemente de la herramienta que use para conectarse. La diferencia se explica en detalle aquí: unix.stackexchange.com/questions/4126/…
Leonid
@Leonid, no exactamente, si usa masilla puede definir y se actualizará al conectarse si el usuario no define un TERM. Si el usuario lo ha definido, tiene razón, no importa qué herramienta prevalecerá en el entorno del usuario.
BitsOfNix
Solo una nota sobre esta solución: YMMV. No siempre es "xterm". Usando dwm (Dynamic Window Manager) con dmenu en FreeBSD 10 tuve que falsificar el terminal usando "rxvt" para obtener el escenario 1. También puede omitir la configuración del término agregando "set term = rxvt" a su archivo ~ / .vimrc .
Ryder
18

Tal comportamiento fue lo único que me mantuvo alejado del uso screen. Utiliza el terminal "pantalla" y cambiarlo a "xterm" no ayudó.

Añadiendo la altscreen onopción en ~ / .screenrc lo resolvió. Del manual de la pantalla:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.
BartBiczBoży
fuente
@Fox OP no menciona nada sobre TERM que está usando, por lo que esta puede ser una respuesta alternativa. De todos modos, esta página está en la parte superior al buscar en Google también por problemas de pantalla
BartBiczBoży
2
Esto hizo el truco! Palabras clave: "vim quit deja terminal de artefactos visuales"
Jay Taylor
0

He probado todas estas opciones pero el resultado no fue el que esperaba. !clearborraría toda la pantalla y no deja atrás los comandos bash anteriores.

La solución simple y correcta es establecer la cadena de tipo de xtermterminal y las velocidades de 38400,38400terminal en Detalles de terminal en configuraciones de masilla en Conexión-> Datos.

Guarde la configuración y listo.

Vinaya Rajanna
fuente