Vim no colorea el final de las líneas cuando se ejecuta dentro de la pantalla


4

Cuando vim se inicia dentro de la pantalla gnu, no colorea el fondo después del texto.

White background

La pantalla parece que debería estar configurada para manejar 256 colores correctamente:

$ screen
$ tput colors
256
$ echo $term
xterm-256colors

Sistema operativo y amp; Shell estoy usando:

$ cat /etc/redhat-release 
Red Hat Enterprise Linux WS release 4 (Nahant Update 9)
$echo $shell
/bin/tcsh

La prueba de color parece que está funcionando bien, excepto el final de las líneas:

:runtime syntax/colortest.vim
:source %

vim colour test inside screen

Y cuando no se usa la pantalla:

vim colour test

¿Debo verificar alguna otra configuración? ¿Hay algún modo de pantalla que pueda forzar para permitir que los colores se vuelvan a dibujar correctamente?

Respuestas:


2

En parte basado en: tmux-and-screen-256-term-not-support .

El problema se resuelve solo cuando se usa un término de 'pantalla'. Para identificarse correctamente como 256 colores, debe ser 'screen-256colors'. Lo que lleva al error de abajo:

E558: Terminal entry not found in terminfo
'screen-256colors' not known. Available builtin terminals are:
    builtin_gui
    builtin_ansi
    builtin_xterm
    builtin_iris-ansi
    builtin_d

Para crear una entrada de pantalla de 256 colores:

infocmp screen > screen-256color.ti

Cambiando (screen-256color.ti)

#       Reconstructed via infocmp from file: /usr/share/terminfo/s/screen
screen|VT 100/ANSI X3.64 virtual terminal, 
        am, km, mir, msgr, xenl, 
        colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,

a :

#       Reconstructed via infocmp from file: /usr/share/terminfo/s/screen
screen-256color|VT 100/ANSI X3.64 virtual terminal, 
        am, km, mir, msgr, xenl, 
        colors#256, cols#80, it#8, lines#24, ncv#3, pairs#64,

Ahora crea el terminfo:

tic screen-256color.ti

1

Dentro screen o tmux, El valor de $TERM necesita comenzar con screen (p.ej. screen, screen-256color ) en lugar de con xterm.

El problema actual aparece debido a la diferencia en el bce (Borrado de color de fondo) Capacidad de los dos terminales.

los TERM=screen* Las descripciones no contienen esta bandera, y en consecuencia, en screen o tmux un "claro desde el cursor hasta el final de la línea" pinta la secuencia de escape que con el color de fondo predeterminado del terminal.

Por otra parte, TERM=xterm* Las descripciones contienen esta bandera, y en consecuencia, xterm Se borra utilizando el color de fondo activo actualmente.

En tu caso, vim Ve incorrectamente que el terminal tiene la bce bandera (debido a TERM=xterm* ) y así utiliza la operación de taquigrafía para rellenar con el color de fondo activo actualmente, que aparecería correctamente directamente bajo xterm, pero aparece incorrectamente bajo screen / tmux. Si lo das correctamente TERM=screen* Entonces notará la falta de bce y elegirá emitir un montón de caracteres de espacio en lugar de la secuencia "borrar hasta el final de la línea", que se verá correctamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.