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?

Munkymorgy
fuente

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
Munkymorgy
fuente
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.

egmont
fuente