Vim non colorare la fine delle righe quando si esegue all'interno dello schermo

Quando vim viene avviato all'interno della schermata gnu, non viene colorato lo background dopo il text.

sfondo bianco

Lo schermo sembra che dovrebbe essere configurato per gestire correttamente 256 colors:

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

OS e Shell sto usando:

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

Il test di colore sembra funzionare bene tranne la fine delle righe:

 :runtime syntax/colortest.vim :source % 

test di colore vim all'interno dello schermo

E quando non si utilizza la schermata:

test di colore vim

C'è qualche altra impostazione che dovrei controllare, c'è una modalità di schermo che posso forzare per consentire che i colors vengano ridisegnati correttamente?

Parzialmente basato su: tmux-e-screen-256-termine-non supportti .

Il problema si risolve quando si utilizza un termine "schermo". Per identificare correttamente 256 colors, dovrebbe essere 'screen-256colors'. Che port all'errore di seguito:

 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 

Per creare una voce di schermo-256colors:

 infocmp screen > screen-256color.ti 

Modifica (schermo-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, 

Ora creare il terminfo:

 tic screen-256color.ti 

screen interna o tmux , il valore di $TERM deve iniziare con la screen (ad es. screen , screen-256color ) piuttosto che con xterm .

Il problema corrente viene visualizzato a causa della differenza della capacità di eliminazione di bce (colore di background) dei due terminali.

Le descrizioni di TERM=screen* non contengono questa bandiera e, di conseguenza, nella screen o nel tmux una "chiara dal cursore alla fine della linea" la sequenza di escape dipinge con il colore di background predefinito del terminal.

D'altra parte, le descrizioni TERM=xterm* contengono questa bandiera, e di conseguenza, la xterm cancella utilizzando il colore di background attualmente attivo.

Nel tuo caso, vim vede in modo errato che il terminal ha la bce flag (a causa di TERM=xterm* ) e quindi utilizza l'operazione chiara e breve per riempire con il colore di background attivo, che apparirà correttamente direttamente sotto xterm, ma appare in modo errato screen / tmux . Se lo fai correttamente TERM=screen* , noterai la mancanza di bce e sceglierai di emettere molti caratteri spaziali piuttosto che la sequenza "chiara alla fine della linea", che sarà corretta.