Vim não colorindo o fim das linhas quando corre dentro da tela

4

Quando o vim é iniciado dentro da tela do gnu, ele não colore o fundo após o texto.

fundo branco

Tela parece que deve ser configurado para lidar com 256 cores corretamente:

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

OS e Shell estou usando:

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

O teste de cores parece estar funcionando ok, exceto no final das linhas:

:runtime syntax/colortest.vim
:source %

teste de cores vim dentro da tela

E quando não estiver usando a tela:

teste de cores vim

Existe alguma outra configuração que eu deveria estar verificando, existe um modo de tela que eu possa forçar para permitir que as cores sejam redesenhadas corretamente?

Munkymorgy
fonte

Respostas:

2

Parcialmente baseado em: tmux-and-screen-256-term-not-supported .

O problema resolve-se quando se utiliza um termo 'screen'. Para identificar como 256 cores corretamente, deve ser 'screen-256colors'. O que leva ao erro abaixo:

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 criar uma entrada screen-256colors:

infocmp screen > screen-256color.ti

Mudando (tela-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,

para :

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

Agora crie o terminfo:

tic screen-256color.ti
Munkymorgy
fonte
1

Dentro screenou tmux, o valor de $TERMnecessidades para começar screen(por exemplo screen, screen-256color) em vez de com xterm.

O problema atual aparece devido à diferença na bcecapacidade de apagar os dois terminais.

As TERM=screen*descrições não contêm esta bandeira, e, consequentemente, em screenou tmuxum "claro desde o cursor para o fim da linha" sequência de escape pinta que, com cor de fundo padrão do terminal.

Por outro lado, as TERM=xterm*descrições contêm esse sinalizador e, consequentemente, xtermapaga usando a cor de plano de fundo ativa no momento.

No seu caso, vimincorretamente vê que o terminal tem o bcesinalizador (por causa de TERM=xterm*) e assim usa a operação de cópia abreviada para preencher com a cor de plano de fundo ativo no momento, que apareceria corretamente diretamente sob xterm, mas aparece incorretamente em screen/ tmux. Se você der corretamente, TERM=screen*ele notará a falta de bcee irá escolher emitir muitos caracteres de espaço ao invés da seqüência "limpar até o fim da linha", que irá olhar corretamente.

egmont
fonte