Falsche Farben mit vim in iTerm2 mit Solarized


84

Ich habe ein seltsames Problem mit iTerm2, in Terminal Vim (Nicht-GUI) und dem solarisierten Farbschema. Zuerst habe ich iTerm2 so eingestellt, dass es das dunkle, solarisierte Farbschema verwendet.

Ich benutze auch solarisiert für vim. Ich habe die folgenden Zeilen in meiner .vimrc

set background=dark
colorscheme solarized

Im Terminal sieht das Farbschema falsch aus: Konsole vim

Als Referenz sieht es so aus unter MacVim (gui vim) gui vim

Was muss ich in iTerm oder meinem .vimrc ändern, damit die Farben in meinem Konsolen-Vim richtig aussehen?

Antworten:


118

Ein paar Dinge zu überprüfen:

  1. In iTerm2 haben Sie unter "Einstellungen -> Profile -> Terminal" unter "Terminalemulation" "Berichtsterminaltyp:" auf xterm-256color eingestellt.

  2. In Ihrer .vimrc-Datei können Sie einige Optionen festlegen, um sicherzustellen, dass 256 Farben verwendet werden:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    Und eine davon sollte funktionieren, aber zuerst die Nummer 1.

ABER, wenn Sie die Standardeinstellung verwenden, die in vim auf Snow Leopard integriert ist, funktioniert dies nicht, da es nicht mit Unterstützung für 256 Farben erstellt wurde. Ich glaube, dass die in Lion integrierte Version dies tut.

Bearbeiten: Aufgrund mehrerer Kommentare zu dieser Antwort habe ich die let g:solarized_termcolors = 256Zeile aus dem .vimrcobigen Beispiel entfernt. Es scheint, dass dies für einige ein Problem sein könnte. Ein anderer sagt, dass das Hinzufügen der Linie let g:solarized_termcolors = 16ein Problem mit der Farbanzeige behoben hat. Ihr eigener Kilometerstand kann variieren.

Zweite Bearbeitung: Wenn Sie die solarisierte Farbpalette in iTerm2 geladen haben, müssen Sie dies tun let g:solarized_termcolors=16. Nur , let g:solarized_termcolors=256wenn Sie nicht die solari Palette als iTerm2 Farbe Preset.


13
Tatsächlich war "let g: solarized_termcolors = 256" die Ursache dafür, dass die solarisierte Anzeige für mich falsch war. Gemäß dem Git-Repo ( github.com/vim-scripts/Solarized ), "WICHTIGER HINWEIS FÜR TERMINAL-BENUTZER:", sollten Sie "g: solarized_termcolors = 16" lassen.
Sai Perchard

3
Wenn Sie das solarisierte Farbschema mit Ihrem Terminal verwenden, werden die 16 ANSI-Farben auf die solarisierten Farben eingestellt. In diesem Fall möchten Sie festlegen let g:solarized_termcolors=16. Wenn Sie 256 verwenden, ist es nah, aber der Hintergrund ist grau anstelle des Tiefseeblau.
Parker Selbert

2
Es sieht so aus, als würde 256ich bei Lion den grauen Hintergrund anstelle von dunkelblau erhalten, aber es 16sieht genauso aus, als würde ich diese Variable in meinem vimrc weglassen. Na ja, Dunkelgrau ist besser als ein wirklich Hellgrau, das ich vorher bekommen habe.
Styfle

1
@SaiPerchard Kommentar sollte zur Antwort hinzugefügt werden. Für mich war es das, was die falsche Hintergrundfarbe korrigierte.
Marten Sytema

1
Hat bei mir nicht funktioniert: stackoverflow.com/a/12969298/1945990 hat aber funktioniert. ITerm, solarisiertes Thema plus vim solarisiertes Thema.
Mike W

91

Die obigen Antworten haben bei mir nicht funktioniert.

Ich verwende iTerm2 mit vim 7.3 unter OS X 10.7.4.

Wenn die oben genannten Lösungen auch bei Ihnen nicht funktioniert haben, versuchen Sie dies

syntax on
set background=dark
let g:solarized_termtrans = 1
colorscheme solarized

Update: Laut Jim Stewart funktioniert dies auch bei Kitty .


Das gleiche gilt für mich hier ... Danke für diese Lösung!
Freitass

2
Ich verwende KiTTY (PuTTY-Derivat) unter Windows 7 und habe let g:solarized_termtrans = 1ein Problem behoben, bei dem die Hintergrundfarbe für leere Zeilen grau war, die Hintergrundfarbe für Zeilen mit Text jedoch nach dem Inhalt schwarz.
Jim Stewart

sie sind nicht schwarz thuogh :(
Setheron

Wenn Sie ein anderes Farbschema verwenden, können Sie dies hi Normal ctermbg=NONE, da dies im Wesentlichen das ist, was termtransin solarisiert (soweit ich aus ihrer Quelle
ersehen

1
Dies kommt der Arbeit am nächsten, es stellt die Hintergrundfarbe korrekt ein, aber meine Cursorzeile, Farbspalte und Zeilennummernspalte haben alle schwarzen Hintergrund. Warum ist nichts jemals einfach!
Ian Vaughan

13

https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized

Laden Sie das Solarized-Paket ( https://github.com/altercation/solarized ) herunter und befolgen Sie die Anweisungen:

Öffnen Sie iTerm 2, öffnen Sie die Einstellungen, klicken Sie in der Einstellungssymbolleiste auf das Symbol "Profile" (früher Adressen, früher Lesezeichen) und wählen Sie dann die Registerkarte "Farben". Klicken Sie auf "Load Presets" und wählen Sie "Import ...". Wählen Sie die Themendatei Solarized Light oder Dark aus.

Sie haben die Solarized-Farbvoreinstellungen jetzt in iTerm 2 geladen, sie jedoch noch nicht angewendet. Um sie anzuwenden, wählen Sie einfach ein vorhandenes Profil aus dem Profillistenfenster links aus oder erstellen Sie ein neues Profil. Wählen Sie dann die Voreinstellung "Solarized Dark" oder "Solarized Light" aus der Dropdown-Liste "Load Presets".

===================================

Oder:

cd ~/.vim/bundle
git clone git://github.com/altercation/vim-colors-solarized.git

Ändern Sie .vimrc

Dunkles Thema:

syntax enable
set background=dark
colorscheme solarized

Licht

syntax enable
set background=light
colorscheme solarized

2
Keine der vorherigen Antworten löst mein Problem, aber diese tut es. Es stellte sich heraus, dass mir die Farbvoreinstellungen fehlten.
Sophia Feng

10

Dies funktionierte für mich unter OS X 10.9.1 in iTerm 2 sowie im Terminal. Ein Fehler, den ich gemacht habe, war, die Farbschema-Deklaration vor die Einstellungen für termtrans und termcolors zu setzen (und ich brauchte beide, damit es funktioniert). Wie andere gesagt haben, habe ich meinen Terminaltyp auf xterm-256color gesetzt

if !has("gui_running")
    let g:solarized_termtrans=1
    let g:solarized_termcolors=256
endif

colorscheme solarized
set background=dark

7

Ich hatte mit dem gleichen Problem unter OSX 10.11.6, iTerm2 Build 3.0.12 zu kämpfen.

Hier ist mein Fix dafür.

  1. .vimrc

    Syntax aktivieren Set Hintergrund = dunkles Farbschema solarisiert

  2. Setzen Sie den Berichtsterminaltyp auf xterm-256color.

Geben Sie hier die Bildbeschreibung ein

  1. Stellen Sie die Farbvoreinstellung im Profil auf Solarized Dark ein

Geben Sie hier die Bildbeschreibung ein


Upvote, weil dies der Anhaltspunkt war, den ich brauchte, um verschiedene Farbvoreinstellungen auszuprobieren, die mich zu der Entdeckung führten, dass Farb-Escape-Codes nach 256 unter Mac und Linux unterschiedlich behandelt werden. Auf einem Mac schienen Farben nach 256 modifiziert zu sein, anstatt auf eine der 8 ausgewählten ANSI-Farben abgeflacht zu werden, während unter Linux ein Modul zu funktionieren scheint, der eine Farbe umhüllt und auswählt.
Eric Leschinski

6

Vom Ersteller: http://ethanschoonover.com/solarized/vim-colors-solarized

WICHTIGER HINWEIS FÜR TERMINALBENUTZER:

Wenn Sie Solarized im Terminalmodus verwenden möchten (dh nicht in einer GUI-Version wie gvim oder macvim), sollten Sie das Farbschema Ihres Terminalemulators so einstellen, dass es die Solarized-Palette verwendet. Ich habe Paletten für einige beliebte Terminalemulatoren sowie Xdefaults in den offiziellen Solarized-Download aufgenommen, der auf der Solarized-Homepage verfügbar ist. Wenn Sie Solarized ohne diese Farben verwenden, muss Solarized angewiesen werden, sein Farbschema auf einen Satz zu verschlechtern, der mit der begrenzten 256-Terminal-Palette kompatibel ist. Wenn Sie jedoch die 16 Ansi-Farbwerte des Terminals verwenden, können Sie die richtigen, spezifischen Werte für Solarized festlegen Palette).

Wenn Sie die benutzerdefinierten Terminalfarben verwenden, sollte solarized.vim sofort für Sie funktionieren. Wenn Sie einen Terminalemulator verwenden, der 256 Farben unterstützt und die benutzerdefinierten solarisierten Terminalfarben nicht verwenden möchten, müssen Sie das verschlechterte 256-Farben-Schema verwenden. Fügen Sie dazu einfach die folgende Zeile vor die solarisierte Farbschema-Zeile ein:

let g:solarized_termcolors=256

Auch hier empfehle ich, Ihre Terminalfarben entweder manuell oder über eines der vielen für den Import verfügbaren Terminalschemata in Solarized-Werte zu ändern.


Nur so konnte ich iTerm2 dazu bringen, die solarisierten Farben in MacVim ohne GUI zu verwenden.
Aaron Tribou

4

Die Antwort von Bill Turner funktioniert, aber es gibt eine Möglichkeit, die Farben genau auf MacVim abzustimmen. Solarized unterstützt unter anderem speziell iTerm2 und Terminalemulatoren.

  1. Gehen Sie zur itith2-Farben-solarisierten Github-Seite
  2. Befolgen Sie die Anweisungen unter "Installation"
  3. Stellen Sie sicher, dass Ihre .vimrc die Zeile hat colorscheme solarized

Dadurch sollten die Vim-Farben in iTerm2 genau so eingestellt werden, wie sie in GUI-Editoren sind.


Wie die Antwort auch andeutet, ist die Antwort von Bill Turner ebenfalls richtig, aber DIESES ist die offizielle (daher korrekte) Art, das solarizedThema festzulegen.
Kann

1

Ein einfacher Weg, um dieses Problem zu lösen, ist:

In den Farben dir auf vim-color-solarized gibt es ein Arquive namens 'solarozed.vim'.

Öffnen Sie diese Datei und suchen Sie:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

ersetzen durch:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

Für alle Probleme, die ich noch hatte, hatte ich das solarisierte Farbprofil iterm2 installiert . Die Installation von vim-color-solarized auf vim-Bundles und das Befolgen der Anweisungen war nicht erforderlich und nicht kompatibel. Es gab lustige Hervorhebungsprobleme wie in der obigen Bildschirmaufnahme.

Lektion gelernt: Mach nicht beides.


0

Ich habe alle vorherigen Vorschläge ausprobiert. Ich habe gerade set t_Co=256zu .vimrc hinzugefügt und es wurde behoben. Ich musste keinen tmuxAlias erstellen oder meine Konfigurationsdatei ändern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.