it-swarm.com.de

vim colorschemes ändert die hintergrundfarbe nicht

Ich versuche, verschiedene Farbschemata in vim anzuwenden, die ich im Internet gesehen habe. Welches Schema ich auch wähle, der Hintergrund bleibt weiß, obwohl Screenshots des angewendeten Schemas zeigen, dass der Hintergrund farbig sein soll.

In einigen Schemata ändert sich der Hintergrund teilweise, der Platz rechts von Zeilen mit Text bleibt jedoch weiß.

Ich verwende Vim 7.2 auf einem Mac. Ich habe gerade angefangen, sich mit Nicht-GUI-Anwendungen zu beschäftigen, also sollte alles so sein, wie es aus der Box war.

Haben die allgemeinen Einstellungen für das Terminalfenster etwas damit zu tun?

Wenn Sie macvim ausführen, sieht alles in Ordnung aus. Es ist nur beim Start von vim aus dem Terminal Dinge seltsam ..

33
Vegar

Ich habe dies in meiner .vimrc und es löste dieses Problem für mich, wenn ich PuTTY verwende.

set t_Co=256
set background=dark
colorscheme mustang
highlight Normal ctermbg=NONE
highlight nonText ctermbg=NONE

Es ist wichtig, das Farbschema vor den ctermbg-Einstellungen in .vimrc zu laden, da diese dieselben Einstellungen überschreiben müssen, die vom Farbschema festgelegt wurden. Dies bedeutet auch, dass Sie das Farbschema nicht wechseln können, während Vim ausgeführt wird, und davon ausgehen, dass es funktioniert.

42
cptloop

Ich füge eine zweite Antwort von mir hinzu, weil sie sich sehr von meiner ersten Antwort unterscheidet und auf ein tatsächliches Problem hinweisen kann.

Wenn Sie sich die aktuelle Website für das Farbschema ansehen, sehen Sie hier: Molokai-Website

sie werden eine Frage sehen, die Ihrer sehr ähnlich ist. Hier ist die Antwort, die vorschlägt, den Befehl :set t_Co=256 in Ihrem vimrc zu testen, um zu sehen, ob er die Dinge korrigiert:

"- Stellen Sie sicher, dass Sie ein Konsolenterminal verwenden, das 256 Farben unterstützt; dies gilt jedoch nicht für alle (insbesondere auf dem Mac). Möglicherweise müssen Sie Vim explizit dazu zwingen, dies zu tun, indem Sie" set t_Co = 256 "in Ihrer .vimrc-Datei ausführen .- Die Windows-Konsole ist gut… total nicht unterstützt, das macht nur 16 Farben, also ist es ein Durcheinander "

28
Herbert Sitz

In Linux hatte ich export TERM=xterm-256color in meinem .bashrc. Das hat dazu geführt, dass vim so aussieht (nachdem set t_Co=256 eingestellt wurde):

Vim looks with molokai theme before fixing TERM variable

Wenn ich diese Zeile aus meinem .bashrc entfernte und ein neues Terminal öffnete (exec bash hat es nicht getan), bekomme ich Folgendes:

Vim looks with molokai theme after fixing TERM variable

13
DavidG

Terminals sind normalerweise auf 256 Farben beschränkt, während die GUI nur durch die Farbtiefe Ihrer Desktop-Umgebung begrenzt ist, normalerweise 2 ^ 32. 

Selbst wenn viel Vim-Farbschema verfügbar ist, werden sie implizit oft für die grafische Benutzeroberfläche entworfen und funktionieren nicht für die Terminalversion. 

Wenn Sie Farbschemata auf vim.org betrachten, werden häufig GUI oder 256 erwähnt. Daher müssen Sie abhängig vom Kontext auswählen, welches verwendet werden soll.

Um ein GUI-Schema in ein Terminal zu konvertieren, können Sie das folgende Plugin verwenden: CSApprox .

Sie können je nach Kontext auch ein anderes Farbschema verwenden. Fügen Sie Folgendes in Ihrem .vimrc hinzu: 

if has("gui_running")  
    colorscheme [using any color you want]  
else  
    colorscheme [using 256 colors]  
endif  
7
Xavier T.

Ich denke, das Problem könnte darin bestehen, wie die Standardfarbe durch das Farbschema geändert wird. Ich habe mir einige Farbschemas angesehen, die nur durch folgende Standardeinstellungen festgelegt wurden:

set background=light

oder 

set background=dark

Nicht sicher, welche Einschränkungen davon bestehen. Ich glaube nicht, dass diese in Terminals funktionieren.

In jedem Fall sollten Sie den Hintergrund in einem Terminal manuell festlegen können, indem Sie die Markierung 'Normal' verwenden. Fügen Sie sie vor den meisten "hi" -Befehlen in der Farbschemadatei an einer Stelle ein, und es sollte die Standardwerte enthalten, mit denen sie arbeiten werden. Zum Beispiel:

hi Normal ctermbg=White ctermfg=Black guifg=Black guibg=White

Ändern Sie ctermfg (Farbterminal-Vordergrund) und ctermbg (Farbterminalhintergrund) so, dass Sie alles haben, was Sie möchten (oder die Farbe, die Sie im Farbschema erwartet haben, aber jetzt nicht sehen). (Denken Sie daran, wenn das Farbschema bereits eine Einstellung für hi Normal hat, ist dies wahrscheinlich nicht Ihr Problem.)

Für ctermbg und ctermfg können Sie Farbnamen eingeben, aber ich denke, es gibt nur eine recht begrenzte Anzahl: Schwarz DarkBlue DarkGreen DarkCyan DarkRed DarkMagenta Braun, Dunkelgelb LightGray, Hellgrau, Grau, Grau DarkGray, DarkGreyBlue, HellblauGreen, LightGreen Cyan, LightCyanRed, LightRed Magenta, LightMagenta Gelb, LightYellow Weiß

Andernfalls sollten Sie anstelle des Farbnamens eine Zahl zwischen 0 und 255 verwenden können. Oder dieses Skript gibt eine ungefähre Vorstellung und lässt Sie sehen, wie Sie auch die Verwendung von mehr Farbnamen einrichten könnten: Vim-Skript mit Farbeinstellungen

Außerdem gibt es eine Reihe von Skripts, die Sie bei der Verwendung oder Konvertierung von für gui geschriebenen Farbschemata zur Verwendung mit cterm unterstützen. Z.B.,:

Colorscheme-Unterstützung für cterm

Does the overall settings for the terminal window have something to do with it?

Vielleicht, aber ich bin mir ziemlich sicher, dass ein ordnungsgemäß geschriebenes Vim-Farbschema alle vorgenommenen Terminaleinstellungen überschreibt. Zumindest machen sie das für mich in Windows und auf Ubuntu. . .

5
Herbert Sitz

Ich hatte das gleiche Problem und stellte fest, dass die Antwort auf diese Frage eigentlich dreifach ist, wobei es nicht ausreicht, nur zwei der drei zu reparieren. Sie müssen haben:

  1. 256-Farben-Unterstützung in Ihrem Terminal - PuTTY mit Standardeinstellungen hat dies

  2. Vim muss erkennen, dass das Terminal 256-Farben-fähig ist: "set t_Co = 256" in Ihrem .vimrc wird es tun

  3. Das Farbschema muss Unterstützung für Farbterminals mit ctermbg- und ctermfg-Attributen für Highlights haben, nicht nur für die gui * -Versionen. http://www.vim.org/scripts/script.php?script_id=2682 sollte diese automatisch zur Verfügung stellen können, und CSApprox verwende ich am definitivsten, benötigt aber entweder + gui -compiled oder eine neuere Version von Vim (7.3 oder neuer).

Die dritte scheint die am häufigsten übersehene Anforderung zu sein. Ich habe heute morgen zu diesem Thema einen kurzen Artikel über meine eigenen Fummelarbeiten geschrieben: http://codeandlife.com/2013/09/22/vim-colorschemes-with-PuTTY-aka-gui-vs-xterm-color256/

Das letzte Problem, das mir beim Ausprobieren verschiedener Einstellungen passiert ist, war, dass, wenn die Farben funktionierten, nur die Bildschirmbereiche mit Text die richtige Hintergrundfarbe hatten. Erneutes Überprüfen der Einstellung des PuTTY-Terminals "Hintergrundfarbe zum Löschen des Bildschirms verwenden" hat dieses letzte Problem für mich behoben.

4
jokkebk

Haben die allgemeinen Einstellungen für das Terminalfenster etwas damit zu tun?

Ja, Terminalparameter überschreiben vim-Parameter (zumindest in OSX und iTerm). Zum Beispiel habe ich ein folgendes Skript in /Users/[Benutzername/bbasc

setBackground() {  
  osascript -e "tell application \"iTerm\"  
    set current_terminal to (current terminal)  
    tell current_terminal  
      set current_session to (current session)  
      tell current_session  
        set background color to $1  
      end tell  
    end tell  
  end tell"  
}  

vim() {
       (setBackground "{65025,65025,65025}" &)
       (exec vim $*)
}

Der obige Befehl ordnet den Terminal-vim-Befehl erneut zu, um vor dem Ausführen von vim eine Hintergrundfarbenänderung durchzuführen. Hintergrundfarbfunktion ist Apfelskript (ich habe das Skript von irgendwoher kopiert ...). Es funktioniert für iTerm. Ich glaube, dass Sie dies anpassen können, um mit Terminal arbeiten zu können (Apple-Produkt + Apple-Skript -> sollte funktionieren).

br,
Juha

3
Juha

Dies funktioniert für mich, um den Hintergrund zu wechseln:

colorscheme hemisu
function! g:ToggleBackground()
  if &background != 'dark'
    set background=dark
  else
    set background=light
    colorscheme hemisu
  endif
endfunction
nnoremap <silent> <F3> :call g:ToggleBackground()<CR>

Setzen Sie auch hellen Hintergrund auf etwas wie ctermbg=231, damit tmux besser damit umgehen kann.

0
vim4life

Verwenden Sie diese Regel, wenn Sie Vim throughSSHverwenden:

  1. Fügen Sie Ihrem lokalen .bashrc hinzu:

    export TERM=xterm-256color
    
  2. Entfernen Sie alle TERM-Definitionen aus .bashrc.

Wenn Sie denselben .bashrc auf (lokal und remote) verwenden, verwenden Sie temporäre Umgebungsvariable und never set TERM global:

alias color-ssh='TERM=xterm-256color ssh [email protected]'
0
DenisKolodin