Vim nie koloryzuje końca linii podczas uruchamiania na ekranie

4

Kiedy vim jest uruchamiany wewnątrz ekranu GNU, nie koloruje tła po tekście.

białe tło

Wygląda na to, że ekran powinien być skonfigurowany do prawidłowej obsługi 256 kolorów:

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

OS i Shell Używam:

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

Test koloru wygląda, jakby działał poprawnie, z wyjątkiem końca linii:

:runtime syntax/colortest.vim
:source %

vim test kolorów na ekranie

A kiedy nie używasz ekranu:

test kolorów vim

Czy są jakieś inne ustawienia, które powinienem sprawdzić, czy istnieje tryb ekranu, który mogę wymusić, aby umożliwić prawidłowe przerysowanie kolorów?

Munkymorgia
źródło

Odpowiedzi:

2

Częściowo oparty na: tmux-and-screen-256-term-nieobsługiwany .

Problem rozwiązuje się sam, gdy używa się terminu „ekran”. Aby poprawnie zidentyfikować jako 256 kolorów, powinno to być „screen-256colors”. Co prowadzi do błędu poniżej:

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

Aby utworzyć pozycję 256 kolorów ekranu:

infocmp screen > screen-256color.ti

Zmiana (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,

do :

#       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,

Teraz utwórz terminfo:

tic screen-256color.ti
Munkymorgia
źródło
1

Wewnątrz screenlub tmuxwartość $TERMpotrzeb zacząć screen(np screen, screen-256color) niż z xterm.

Obecny problem pojawia się z powodu różnicy w możliwości bce(kasowanie koloru tła) dwóch terminali.

Te TERM=screen*opisy nie zawierają tę flagę, a zatem w screenlub tmux„czystym od kursora do końca linii” sekwencji specjalnej farby, która z terminala domyślny kolor tła.

Z drugiej strony TERM=xterm*opisy zawierają tę flagę i odpowiednio xtermkasują przy użyciu aktualnie aktywnego koloru tła.

W twoim przypadku vimniepoprawnie widzi, że terminal ma bceflagę (z powodu TERM=xterm*), i dlatego używa operacji skracania jasności, aby wypełnić aktualnie aktywny kolor tła, który pojawiłby się poprawnie bezpośrednio pod xterm, ale niepoprawnie pod screen/ tmux. Jeśli podasz go poprawnie TERM=screen*, zauważy brak bcei wybierze emitowanie dużej liczby znaków spacji zamiast sekwencji „wyczyść do końca linii”, która będzie wyglądać poprawnie.

egmont
źródło