Lo sfondo di Colorscheme non è corretto nel terminale


13

Ho importato il colorismo e la tavolozza solarizzati. Il mio terminale ha i colori e lo sfondo corretti, gvim ha i colori e lo sfondo corretti, ma vim ha uno sfondo colorato in modo errato. Il testo è tutto corretto, ma lo sfondo sembra essere nero puro.

Questo è un confronto tra Terminal, GVim e Vim

Ecco il mio .vimrc:

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Se qualcuno ha qualche suggerimento su cosa potrebbe causare questo, sarei molto grato. Corro xubuntu con il terminale predefinito.

Vorrei anche menzionare che l'opzione luce si traduce in uno sfondo molto giallo per Vim.


1
Con "[m] y terminal ha i colori e lo sfondo corretti", intendi dire che hai seguito i consigli specifici su Vim nel terminal?
Andrew,

2
Ho seguito il consiglio, @Andrew. Grazie comunque.
Oberdiear,

@Oberdiear Il consiglio a cui Andrew si collega spiega che è necessario impostare il terminale per utilizzare i colori solarizzati e non utilizzare l' g:solarized_termcolors=256opzione. Se sei felice di usare i colori solarizzati nel tuo terminale, questo metodo funziona molto meglio. Il testo della tua domanda implica che hai impostato il tuo terminale per utilizzare i colori solarizzati (anche se lo screenshot che visualizzi non mi sembra così), quindi in quel caso, perché stai usando l' g:solarized_termcolors=256impostazione?
Ricco

Che terminale stai usando? Ho questo script per gnome-terminal.
mercoledì

@Rich, immagino di non avere la palette impostata correttamente. Tu (o qualcun altro) sai come configurarlo correttamente per Xfce Terminal?
Oberdiear,

Risposte:


10

Ci sono due motivi per cui penso che ciò possa accadere:

  1. La combinazione di colori solarizzata che stai utilizzando non dichiara ctermfge ctermbgper nessuna delle caratteristiche che desideri evidenziare. Prova questa combinazione di colori , dovrebbe essere essenzialmente la stessa sia all'interno del tuo terminale che in gvim, in questo caso potresti dover esaminare una combinazione di colori che dichiara ctermfge ctermbg.

  2. Potrebbe essere necessario assicurarsi che l'emulatore di terminale supporti i colori che si sta tentando di visualizzare:


Si noti che entrambe queste cose potrebbero accadere contemporaneamente, ma è difficile diagnosticare ciò senza ulteriori informazioni sul sistema.


Il desert256 funziona bene, ma non sono un grande fan. Credo che la TERMvariabile non sia corretta, ma non ho idea di come cambiarla.
Oberdiear,

2
Ho installato ncurses-term. Ho quindi eseguito il comando. Dopo averlo eseguito, tutto il testo diventa grigio e lo sfondo è nero.
Oberdiear,

1
Dovrebbe essere export TERM=xterm+256color, NON "color s " (plurale). Inoltre, credo che dovrebbe essere xterm-256color, NON "** + ** 256colore; ma potrei sbagliarmi in modo specifico sull'utilizzo con solarizzato. Secondo questa risposta ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward

export TERM=xterm+256colorsu OSX ottengozle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross il

Ho avuto questo problema esatto e ho export TERM=xterm+256colorsaiutato Vim a rilevare e utilizzare esattamente il colore di sfondo come il mio terminale.
Shyam Habarakada,

5

Grandi notizie a tutti. @Tom e @Rich mi hanno messo sulla strada giusta. Ho trovato una soluzione fornita qui . Ho impostato il mio .vimrc sul semplice

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

Questo sembra risolvere tutto. I colori non sembrano essere così brillanti negli esempi di font , ma potrebbe benissimo essere solo io. A chiunque voglia usare il sistema di colori Solarized e usa xfce4-terminal, basta cambiare terminalrc e .vimrc sembra risolvere i miei problemi principali. Grazie a tutti per il vostro aiuto!


1
Non dovresti avere bisogno della set t_Colinea nel tuo vimrc: Vim può leggere questo valore dal terminale (L'impostazione 't_Co'sembra essere un po 'un cult del carico di Vim: molte persone online consigliano di farlo senza capire davvero i problemi che stanno cercando di risolvere .)
Rich

Dirò solo "screen" e "tmux" - questi strumenti cambiano la variabile $ TERM in modo che vim non possa leggere le informazioni di cui ha bisogno.
NieDzejkob,

@NieDzejkob È possibile utilizzare un terminale multiplexer e avere ancora un terminale correttamente configurato.
Ricco

@ Ti dispiace spiegare qual è la soluzione giusta sul lato terminale? Sto usando tmux $TERM=screene l'impostazione t_Co=16risolve davvero i problemi visivi per me, ma mi piacerebbe sapere qual è la relazione, in primo luogo.
Sfogliando il

@ffledgling Mi piacerebbe molto. Potrebbe richiedere un po 'di avanti e indietro, quindi vieni e unisciti a me nella chat .
Ricco

4

Immagino sia un problema di compatibilità di questo colorschemecon il terminale. Il plugin csaproxrisolve miracolosamente un sacco di questi problemi.

Sinossi:

È difficile trovare i colori per il terminale Vim. La maggior parte dei colori sono scritti per supportare solo GVim e non funzionano affatto nel terminale Vim.

Questo plug-in rende i colori solo per GVim Just Work nel terminale Vim, purché il terminale supporti 88 o 256 colori - e la maggior parte lo fa in questi giorni. Questo di solito non richiede alcuna interazione da parte dell'utente (ma consulta la guida su cosa fare se le cose non funzionano). Dopo aver installato questo plug-in felicemente, ogni volta che lo usi :colorschemefarà la sua magia e farà funzionare lo schema dei colori.

Collegamenti al plug-in:


1
Questo è un plug-in utile, ma non aiuta qui, poiché il sistema di colori solarizzato fa già un notevole sforzo per lavorare nel terminale Vim con terminali sia a 16 che a 256 colori.
Ricco

4

Il sistema di colori terminalizzato Vim può funzionare in due modi diversi.

  1. Una modalità a 16 colori: Solarized contiene solo 16 colori, quindi in questa modalità imposti il ​​tuo terminale per usare i colori solarizzati come suoi 16 colori, e il colorimme Vim li usa solo. Quindi, ad esempio, il sistema di colori Vim richiederà il colore del terminale "1" e il terminale lo visualizzerà come il colore esadecimale # dc322f.

  2. Una modalità a 256 colori, in cui seleziona le corrispondenze più vicine per i suoi 16 colori da una tavolozza a 256 colori.

Il primo metodo è fortemente raccomandato dall'autore (e da me), e sembra che tu sia felice di usare questo metodo perché dichiari che il tuo "terminale ha i colori e lo sfondo corretti".

Tuttavia, dal tuo screenshot appare che il tuo terminale non ha i colori corretti impostati. (Il bianco non è un colore nel set solarizzato, e anche se non l'ho mai rovinato, l'altro colore del testo nello screenshot non mi sembra come se fosse "Violet" (# 6c71c4).)

Se rimuovi l'impostazione delle linee t_Coe g:solarized_termcolorsdal tuo vimrc * e configuri correttamente i colori dei tuoi terminali, dovresti scoprire che il sistema di colori a 16 colori solarizzato inizierà a funzionare.

* Queste linee passano al sole per usare la sua modalità (meno fedele) a 256 colori. Anche questo dovrebbe funzionare (sospetto che @Jubal abbia ragione nel suggerire che BCE è il problema qui ), ma la modalità a 16 colori è preferibile a meno che tu non voglia esplicitamente usare il solarizzato nel tuo terminale.


Credo che tu sia completamente sulla strada giusta. Penso di non avere la palette installata correttamente. Potresti guidarmi attraverso il processo? Apprezzo tutto il tuo aiuto, @Rich.
Oberdiear,

1
Sembra che il tuo primo link sia ora morto.
akozi,

@azoki Grazie per avermelo fatto notare. Sembra che il sito solarizzato sia in fase di (ri) costruzione. Ho modificato il link per puntare al repository github per il momento.
Ricco

3

Sembra che tu abbia trovato la tua risposta. Ho avuto lo stesso problema e niente sopra ha funzionato. Ciò che ha funzionato per me è stato usare l' altercoterminalrc , al contrario di quello di sgerrand .

Il mio rilevante vimrcè semplicemente:

syntax enable
set background=dark
colorscheme solarized

Spero che aiuti qualcuno!


1

Quindi questo è ciò che funziona per me (su tutti i terminali che usavo - xterm, konsole, gnome-terminal, iterm2, roxterm - su Linux e OS X, anche con gvim e macvim):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif

Ciò ha causato un problema simile all'impostazione di t_Co = 16. Sono abbastanza sicuro di avere un problema con la palette, ma devo ancora capirlo.
Oberdiear,

Quale emulatore di terminale stai usando? Se ricordo bene, la configurazione solarizzata integrata di konsole non è completamente utilizzabile e bisogna usare le impostazioni dal repository solarizzato originale ...
Jubal

Uso Xfce Terminal.
Oberdiear,

Penso di averlo fatto funzionare: prova a forzare TERM a xterm-256color, mentre usi il preset solarizzato dalle preferenze del terminale, non dal repository git xfce-terminal solarizzato. Questo insieme all'hacking BCE sopra ha fatto il trucco per xfce4-terminal per me.
Jubal,

(C'è ancora qualcosa di sospetto nell'emulazione terminale sottostante e nel rendering dei caratteri, e immagino di essermi ricordato perché sono tornato al semplice vecchio xterm su Linux ...)
Jubal

0

È stato difficile far funzionare (uso il terminale Vim in Linux Mint), e sfortunatamente non ho annotato i dettagli di tutto ciò che ho fatto. Ecco la sezione pertinente del mio vimrc:

syntax enable
set background=dark
set t_Co=16
colo solarized

Potrebbe anche valere la pena dare un'occhiata a questo progetto su GitHub .


set t_Co = 16 fa sì che i colori siano radicalmente diversi da quelli previsti. Sto anche usando il terminale Xubuntu predefinito è Xfce-Terminal.
Oberdiear,

@Oberdiear Se l'impostazione t_Co = 16 influenza i colori in quel modo (con la variabile g: solarized_termcolors non impostata), ciò significa che i colori dei terminali non sono impostati correttamente per usare il solarizzato. Come si impostano i colori del terminale?
Ricco

0

Quello che ha funzionato per me è stato rimuovere questa parte delle tue impostazioni

if has('gui_running')
   set background=dark
else
   set background=dark
endif

Sto eseguendo un terminale xfce4


0

Ho avuto anche questo problema con xfce-terminal.

Dopo un po 'di ricerche, ho scoperto questo errore : qualsiasi cosa impostata come $TERMnel tuo terminale XFCE viene silenziosamente ignorata.

Penso che questo sia davvero un bug della libreria VTE sottostante (e non mantenuta) che utilizza il terminale XFCE (ancora basato su GTK + 2). Il passaggio a un terminale GTK + 3, che utilizza implicitamente la nuova libreria VTE , ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.