Der Hintergrund des Farbschemas ist im Terminal nicht korrekt

13

Ich habe das solarisierte Farbschema und die Palette importiert. Mein Terminal hat die richtigen Farben und den richtigen Hintergrund, gvim hat die richtigen Farben und den richtigen Hintergrund, aber vim hat einen falsch gefärbten Hintergrund. Der Text ist korrekt, aber der Hintergrund scheint schwarz zu sein.

Dies ist ein Vergleich von Terminal, GVim und Vim

Hier ist meine .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

Wenn jemand irgendwelche Vorschläge hat, was dies verursachen könnte, wäre ich sehr dankbar. Ich starte xubuntu mit dem Standard-Terminal.

Ich sollte auch erwähnen, dass die Lichtoption für Vim einen sehr gelben Hintergrund ergibt.

Oberdiear
quelle
1
Wollen Sie mit "[m] y terminal has the correct colors and background" sagen, dass Sie den spezifischen Hinweisen zu Vim im Terminal gefolgt sind ?
Andrew
2
Ich habe den Rat befolgt, @Andrew. Trotzdem danke.
Oberdiear
@Oberdiear Der Rat, auf den Andrew verweist, erklärt, dass Sie Ihr Terminal für die Verwendung solarisierter Farben einrichten und die Option nicht verwenden sollten g:solarized_termcolors=256. Wenn Sie gerne solarisierte Farben in Ihrem Terminal verwenden, funktioniert diese Methode viel besser. Der Text Ihrer Frage impliziert , Sie haben Ihr Terminal einrichten, um solari Farben zu verwenden (obwohl der Screenshot Sie zeigen mir sieht nicht so aus , wie es der Fall ist), so dass in diesem Fall, warum verwenden Sie die g:solarized_termcolors=256Einstellung?
Rich
Welches Terminal benutzen Sie? Ich habe dieses Skript für gnome-terminal.
wchargin
@Rich, ich vermute, dass ich die Palette nicht richtig eingerichtet habe. Wissen Sie (oder jemand anderes), wie man das für Xfce Terminal richtig einrichtet?
Oberdiear

Antworten:

10

Es gibt zwei Gründe, warum ich denke, dass dies passieren könnte:

  1. Die solarized Farbschema Sie verwenden , nicht zu erklären ctermfgund ctermbgfür eine der Funktionen möchten Sie Highlight. Probieren Sie dieses Farbschema aus . Es sollte sowohl in Ihrem Terminal als auch in gvim im Wesentlichen gleich aussehen. Wenn dies der Fall ist, müssen Sie möglicherweise ein Farbschema verwenden, das ctermfgund deklariert ctermbg.

  2. Möglicherweise müssen Sie sicherstellen, dass Ihr Terminal-Emulator die Farben unterstützt, die Sie anzeigen möchten:


Beachten Sie, dass diese beiden Dinge zur gleichen Zeit passieren können, es jedoch schwierig ist, dies zu diagnostizieren, ohne weitere Informationen über Ihr System zu erhalten.

El Entwickler
quelle
Das desert256 funktioniert gut, aber ich bin kein großer Fan. Ich glaube, die TERMVariable ist falsch, aber ich habe keine Ahnung, wie ich sie ändern soll.
Oberdiear
2
Ich habe ncurses-term installiert. Ich habe dann den Befehl ausgeführt. Nachdem ich es ausgeführt habe, wird der gesamte Text grau und der Hintergrund ist schwarz.
Oberdiear
1
Es sollte export TERM=xterm+256colorNICHT "Farbe s " (Plural) sein. Auch glaube ich , dass ist , sollte sein xterm-256color, nicht „** + ** 256color;. Aber ich kann falsch sein speziell darüber mit solari Verwendung Nach dieser Antwort ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Edward
export TERM=xterm+256colorUnter OSX bekomme ichzle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross
Ich hatte genau dieses Problem und export TERM=xterm+256colorshalf vim solarized dabei, die genaue Hintergrundfarbe meines Terminals zu erkennen und zu verwenden.
Shyam Habarakada
5

Tolle Neuigkeiten, alle zusammen. @Tom und @Rich haben mich auf den richtigen Weg gebracht. Ich habe hier eine Lösung gefunden . Ich habe meine .vimrc auf die einfache eingestellt

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

Dies scheint alles zu beheben. Die Farben scheinen in den Schriftbeispielen nicht so hell zu sein , aber das könnte sehr gut nur ich sein. Für alle, die das solarisierte Farbschema und das xfce4-Terminal verwenden möchten, schienen meine Hauptprobleme nur durch Ändern des terminalrc und des .vimrc gelöst zu sein. Vielen Dank an alle für Ihre Hilfe!

Oberdiear
quelle
1
Sie sollten die set t_CoZeile in Ihrem vimrc nicht benötigen : Vim kann diesen Wert vom Terminal lesen (Einstellung 't_Co'scheint ein bisschen wie ein Vim-Frachtkult zu sein: Viele Leute empfehlen dies online, ohne wirklich zu verstehen, welche Probleme sie zu lösen versuchen .)
Rich
Ich sage nur "screen" und "tmux" - diese Tools ändern die Variable $ TERM, sodass vim die benötigten Informationen nicht lesen kann.
NieDzejkob
@NieDzejkob Sie können einen Terminal-Multiplexer verwenden und haben dennoch ein korrekt konfiguriertes Terminal.
Rich
4

Ich vermute, es ist ein Problem der Kompatibilität colorschememit dem Terminal. Das Plugin csaproxlöst auf wundersame Weise eine Reihe dieser Probleme.

Zusammenfassung:

Es ist schwer, Farbschemata für Terminal Vim zu finden. Die meisten Farbschemata unterstützen nur GVim und funktionieren in Terminal Vim überhaupt nicht.

Mit diesem Plugin können nur GVim-Farbschemata im Terminal Vim verwendet werden, sofern das Terminal 88 oder 256 Farben unterstützt - und die meisten tun dies heutzutage. Dies erfordert normalerweise keine Benutzerinteraktion (in der Hilfe erfahren Sie jedoch, was zu tun ist, wenn die Dinge nicht einfach funktionieren). Nachdem Sie dieses Plugin erfolgreich installiert haben, kann es bei jeder Verwendung :colorschemeseine Wirkung entfalten und das Farbschema "Just Work" aktivieren.

Links zum Plugin:

Jonatas Eduardo
quelle
1
Dies ist ein nützliches Plugin, das hier jedoch nicht weiterhilft, da das solarisierte Farbschema bereits erhebliche Anstrengungen unternimmt, um in Terminal Vim sowohl unter 16-Farben- als auch unter 256-Farben-Terminals zu arbeiten.
Rich
4

Das solarisierte Terminal-Vim-Farbschema kann auf zwei verschiedene Arten funktionieren.

  1. Ein 16-Farben-Modus: Solarisiert enthält nur 16 Farben. In diesem Modus stellen Sie Ihr Terminal so ein , dass die solarisierten Farben als 16 Farben verwendet werden, und das Vim-Farbschema verwendet nur diese. So fordert beispielsweise das Vim-Farbschema die Terminalfarbe "1" an, und das Terminal zeigt dies als die Hex-Farbe # dc322f an.

  2. Ein 256-Farben-Modus, in dem aus einer 256-Farben-Palette die besten Übereinstimmungen für die 16 Farben ausgewählt werden.

Die erstere Methode wird vom Autor (und von mir) nachdrücklich empfohlen , und es hört sich so an, als würden Sie diese Methode gerne anwenden, da Sie angeben, dass Ihr "Terminal die richtigen Farben und den richtigen Hintergrund" hat.

Aus Ihrem Screenshot geht jedoch hervor, dass auf Ihrem Terminal nicht die richtigen Farben eingestellt sind. (Weiß ist keine Farbe im solarisierten Set, und obwohl ich es nicht in die Augen getropft habe, sieht die andere Textfarbe im Screenshot für mich auch nicht so aus, als wäre sie solarisiert "Violett" (# 6c71c4).)

Wenn Sie die Linieneinstellung t_Cound g:solarized_termcolorsvon Ihrem vimrc * entfernen und die Terminalfarben korrekt konfigurieren, sollten Sie feststellen, dass das solarisierte 16-Farben-Farbschema funktioniert.

* Diese Linien werden solarisiert, um den (weniger zuverlässigen) 256-Farben-Modus zu verwenden. Dies sollte auch funktionieren (ich vermute, dass @Jubal richtig ist, um darauf hinzuweisen, dass BCE das Problem ist ), aber der 16-Farben-Modus ist vorzuziehen, es sei denn, Sie möchten in Ihrem Terminal ausdrücklich keine Solarisierung verwenden.

Reich
quelle
Ich glaube, Sie sind auf dem richtigen Weg. Ich glaube, ich habe die Palette nicht richtig installiert. Könnten Sie mich durch den Prozess führen? Ich bedanke mich für Ihre Hilfe, @Rich.
Oberdiear
1
Es scheint, dass Ihr erster Link jetzt tot ist.
Akozi
@azoki Danke, dass du mich informiert hast. Die Solarized-Site befindet sich anscheinend im (Neu-) Aufbau. Ich habe den Link geändert, um vorerst auf das Github-Repo zu verweisen.
Rich
3

Scheint, als hättest du deine Antwort gefunden. Ich hatte das gleiche Problem und nichts oben hat funktioniert. Was für mich funktionierte, war die Verwendung von Auseinandersetzungen imterminalrc Gegensatz zu Sgerrands .

Mein relevanter vimrcist einfach:

syntax enable
set background=dark
colorscheme solarized

Hoffe das hilft jemandem!

ohsonice
quelle
1

Das funktioniert also für mich (auf allen Terminals, die ich früher verwendet habe - xterm, konsole, gnome-terminal, iterm2, roxterm - unter Linux und OS X, auch mit gvim und 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
Jubal
quelle
Dies verursachte ein ähnliches Problem wie das Setzen von t_Co = 16. Ich bin mir ziemlich sicher, dass ich ein Problem mit der Palette habe, aber ich muss es noch herausfinden.
Oberdiear
Welchen Terminalemulator verwenden Sie? Wenn ich mich recht erinnere, ist die integrierte solarisierte Konfiguration von konsole nicht voll nutzbar und es müssen Einstellungen aus dem ursprünglichen solarisierten Repository verwendet werden…
Jubal
Ich benutze Xfce Terminal.
Oberdiear
Ich glaube, ich habe es geschafft: Versuchen Sie, TERM auf xterm-256color zu zwingen, während Sie die solarisierte Voreinstellung aus den Einstellungen des Terminals verwenden, nicht aus dem solarisierten Git-Repository von xfce-terminal. Zusammen mit dem obigen BCE-Hack hat dies für mich den Trick für xfce4-terminal getan.
Jubal
(Die zugrunde liegende Terminal-Emulation und das Schrift-Rendering sind immer noch etwas faul , und ich glaube, ich wurde daran erinnert, warum ich unter Linux wieder zu normalen alten xterm-Versionen zurückgekehrt bin…)
Jubal
0

Dies war eine schwierige Aufgabe (ich verwende Terminal Vim in Linux Mint), und leider habe ich nicht alle Details aufgeschrieben, die ich getan habe. Hier ist der relevante Abschnitt meines vimrc:

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

Es kann sich auch lohnen, sich dieses Projekt auf GitHub anzuschauen .

Tom
quelle
set t_Co = 16 bewirkt, dass sich die Farben grundlegend von den erwarteten unterscheiden. Ich verwende auch das Standard-Xubuntu-Terminal Xfce-Terminal.
Oberdiear
@Oberdiear Wenn die Einstellung von t_Co = 16 die Farben auf diese Weise beeinflusst (wenn die Variable g: solarized_termcolors nicht gesetzt ist), bedeutet dies, dass Ihre Terminalfarben für die Verwendung von solarized nicht richtig eingerichtet sind. Wie stellen Sie Ihre Terminalfarben ein?
Rich
0

Für mich hat es funktioniert, diesen Teil Ihrer Einstellungen zu entfernen

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

Ich verwende ein xfce4-Terminal

Nisennenmondai
quelle
0

Ich hatte dieses Problem auch mit xfce-terminal.

Nach ein wenig Recherche habe ich diesen Fehler entdeckt : Alles, was Sie $TERMin Ihrem XFCE-Terminal eingestellt haben, wird stillschweigend ignoriert.

Ich denke, dies ist wirklich ein Fehler der zugrunde liegenden (und nicht verwalteten) alten VTE-Bibliothek , die das XFCE-Terminal (immer noch GTK + 2-basiert) verwendet. Der Wechsel zu einem GTK + 3-Terminal, das implizit die neue VTE-Bibliothek verwendet , löste das Problem.

ntd
quelle