Wie kann ich das Farbschema vollständig ausschalten?

7

Ursprünglicher Beitrag

Ich habe ein Farbschema in meiner .vimrc konfiguriert, aber manchmal möchte ich es vollständig ausschalten, was bedeutet, dass ich möchte, dass Vim die Standard-Hintergrund- und Vordergrundfarben meines Terminals verwendet.

Mein Problem ist, dass ich nicht weiß, wie ich es einfach machen soll. Wenn ich :syntax offVim verwende, wird der größte Teil der Farbe ausgeschaltet, die Cursorlinienfarbe wird jedoch nicht entfernt. Die Hintergrundfarbe wird nicht auf die Standardfarbe des Terminals geändert.

Gibt es einen Befehl wie :nocolorschemeoder vim -u NONEnur für die Farben?

Mir ist bewusst, dass ich eine benutzerdefinierte .vimrc-Datei erstellen und mit der -uOption laden kann . Ich suche jedoch nach einer einfacheren Lösung.

Hauptupdate

Da Sie mir verschiedene Befehle und Ansätze vorgeschlagen haben, habe ich beschlossen, Ihnen nach dem Aufrufen dieser Befehle einige Fotos des Bildschirms zu zeigen.

Terminalumgebung

Ich benutze st (1) Terminal von sauglos.org mit einer benutzerdefinierten config.h, so dass ich defaultfg = 10(hellgrün) und defaultbg = 0(schwarz) habe. Ich verwende die GNU / Linux-Version, mit der PocketC.HIP geliefert wird ( uname -aErgebnisse in Linux-Chip 4.3.0-ntc # 1 SMP Mi 11. Mai 21:57:30 UTC 2016 arm7l GNU / Linux ).

Screenshots

  1. Kein Farbschema (das ist was ich will)

    Geben Sie hier die Bildbeschreibung ein

    Dies ist, was ich erreichen möchte, ohne Vim damit beginnen zu müssen vim -u NONE.

  2. Normale Farben

    Geben Sie hier die Bildbeschreibung ein

    Ich bekomme diese Farben, wenn:

    • Normalerweise starte ich mein Vim (dies ist mein Standardfarbschema).
    • Ich rufe an :set t_Co=0.
      Es ist erwähnenswert, dass es nichts ändert, wenn ich mein benutzerdefiniertes Monokai-Farbschema verwende. Es ändert das Erscheinungsbild im Standardfarbschema, wie Sie in 5 sehen können.

      Das Lustige ist, dass die Ausgabe von :verbose set t_Co?anschließend aufgerufen ist, t_Co=256was darauf hinweist, dass sich buchstäblich nichts geändert hat.

    • Ich beginne Vim mit TERM=xterm vim.

  3. Standardfarben

    Geben Sie hier die Bildbeschreibung ein

    Ich bekomme diese Farben, wenn:

    • Ich rufe an :colorscheme default.
  4. Vim hat die meisten Farben entfernt, greift jedoch nicht auf die Standardeinstellungen des Terminals zurück

    Geben Sie hier die Bildbeschreibung ein

    Ich bekomme es nach:

    • Anrufen :syntax off.
  5. Fast kein Farbschema

    Geben Sie hier die Bildbeschreibung ein

    Ich erhalte dies, nachdem ich diese 4 Befehle nacheinander ausgeführt habe:

    " The effect is more visible on the default colorscheme 
    " than on my molokai colorscheme.
    :set t_Co=0
    :colorscheme default
    :hi clear
    

    Wenn ich :hi LineNrdanach renne, bekomme ich:

     LineNr          XXX term=underline ctermfg=6 guifg=Brown
    
  6. In einer C-Quelldatei unterstrichene Zeichenfolgen und Typen

    Geben Sie hier die Bildbeschreibung ein

    Nach der Bewerbung :set term=vt100.

  7. In Vim neu gezeichnet

    Video-Miniaturansicht
    Vim ist nach dem Aufruf kaputt gegangen: set term = builtin_dumb (Video)

    Nach dem Anwenden :set term=builtin_dumbvergisst mein Vim, wie man Linien neu zeichnet, wenn ich mich mit jund bewege k.

  8. Untersuchen Sie die Standardeinstellungen meines Temrminals

    Geben Sie hier die Bildbeschreibung ein

    Das bekomme ich, nachdem ich echo -e " \033[0;4mfoo\033[0;0mbar"in meinem Terminal gelaufen bin.

Mateusz Piotrowski
quelle
3
Ich denke, Sie beschreiben zwei verschiedene Dinge: Wenn Sie das Farbschema deaktivieren möchten, haben Sie nicht die Farben Ihrer Terminals, sondern die Standardfarben von vim. Wenn Sie Ihre Terminalfarben in vim haben möchten, müssen Sie ein Farbschema finden (oder erstellen), das mit dem Ihres Terminals übereinstimmt.
Statox
@statox OK, ich dachte nur, dass es beim Ausführen die Standardeinstellungen vim -u NONEdes Terminals übernimmt. Vielen Dank für den Hinweis.
Mateusz Piotrowski
Wenn es nur so einfach wäre, würden viele Leute ziemlich glücklich sein ;-) Aber ich denke, es ist zumindest aus folgenden Gründen nicht möglich: 1) Nicht alle Terminals definieren ihre Farben auf die gleiche Weise. 2) Vim hat seine eigene Farbe Mechanismus, der mit den bestehenden Mechanismen für Terminals kaum kompatibel ist. Jetzt bin ich wirklich kein Experte für Farbanpassungen, also kann ein Farbschema-Guru vielleicht genauer sein oder einen Weg kennen :-)
statox
1
Ich habe meine Antwort aktualisiert, um die Unterstreichung zu berücksichtigen. Ich hätte in meinem vorherigen Kommentar etwas klarer sein sollen: Ich verstehe, dass die Einstellung t_Co je nach Farbschema unterschiedliche Auswirkungen zu haben scheint, obwohl ich keine Ahnung habe, durch welchen Mechanismus dies auftreten könnte. Noch etwas zu versuchen: Wenn Sie Monokai verwenden, führen Sie es aus :set t_Co=0, unmittelbar gefolgt von :verbose set t_Co?Was ist t_Co eingestellt? (Ich frage mich, ob es irgendwie nicht richtig eingestellt wird: Ich vermute nur, dass Sie möglicherweise einen automatischen Befehl haben, der es zurücksetzt, oder es gibt einen Fehler, der dazu führt, dass es nicht eingestellt wird.)
Rich
1
Okay, Rätsel gelöst: Siehe mein Update, warum :set t_Co=0es nicht funktioniert, wenn das Farbschema auf Monokai eingestellt ist.
Rich

Antworten:

6

Farben vollständig deaktivieren

Wenn Sie möchten , Vim keine Farben bei benutzen alle , brauchen Sie nur den Befehl auszuführen:

:set t_Co=0

Dies teilt Vim mit, dass es in einem Terminal ausgeführt wird, das keine Farben unterstützt. Daher gibt Vim nur Schwarzweißtext aus (der dann von Ihrem Terminal in den Standardfarben angezeigt wird).

Beachten Sie jedoch, dass nach dem Ändern der t_CoEinstellung das aktuelle Farbschema neu geladen wird (damit die von ihm definierten Farben entsprechend geändert werden können). Das von Ihnen verwendete "Monokai" -Farbschema beginnt mit der Linie :set t_Co=256und setzt die Option sofort zurück.

Ich würde argumentieren, dass dies ein falsches Verhalten ist und als Fehler beim Betreuer dieses Farbschemas abgelegt werden sollte. Natürlich könnten sie anderer Meinung sein und argumentieren, dass es keinen Sinn macht, es in einem Terminal zu verwenden, das dies nicht unterstützt, da ihr Farbschema 256 Farben erfordert (und dass diese Zeile Monokai hilft, korrekt zu arbeiten, wenn Vim ausgeführt wird ein falsch konfiguriertes Terminal).

In beiden Fällen müssen Sie zuerst das Farbschema von Monokai entfernen, bevor Sie die t_CoOption festlegen , wie Sie festgestellt haben.

Beschränken der Farben auf die in der Shell häufig verwendeten Farben

Die Farben, die Vim für seine Ausgabe verwendet, können mit dem :highlightBefehl definiert und angezeigt werden . Durch Ausführen :highlight clearwerden diese auf die Standardeinstellungen von Vim zurückgesetzt (praktisch dasselbe wie Ausführen :colorscheme defaults).

Auszug aus :help :highlight:

:hi[ghlight] clear        Reset all highlighting to the defaults.  Removes all  
                          highlighting for groups added by the user!
                          Uses the current value of 'background' to decide which
                          default colors to use.

(Hinweis: Beachten Sie den Kommentar zur 'background'Option.)

Wenn dies nicht die gewünschte Ausgabe erzeugt, haben Sie mehrere Möglichkeiten.

  1. Wenn Sie Vim derzeit im 256-Farben-Modus verwenden, können Sie stattdessen den 16-Farben-Modus verwenden, da dies dazu führen würde, dass Vim aus der Farbpalette auswählt, die Sie in der Shell mit größerer Wahrscheinlichkeit sehen.

    Der saubere Weg, dies zu tun, besteht darin, Vim mit einem anderen $ TERM-Variablensatz auszuführen. Der Wert, den Sie verwenden müssen, hängt von Ihrem Terminal ab. Wenn dies $TERMjedoch normalerweise xterm-256colorder Fall ist , reicht es aus, vim mit dem folgenden Befehl auszuführen:

    TERM=xterm vim
    

    (Sie können einen ähnlichen Effekt auch auf hackigere Weise erzielen, indem Sie die Terminaloption direkt in vim einstellen : :set t_Co=16.)

  2. Alternativ können Sie die Farben dieser Elemente mit dem :highlightBefehl ändern, wenn nur eine Handvoll bestimmter Elemente falsch gefärbt sind . zB um die Hintergrundfarbe von der Cursorzeile zu entfernen:

    :highlight CursorLine ctermbg=NONE
    

    Wenn Sie nicht sicher sind, welche Gruppe Sie ändern müssen, können Sie entweder einfach :highlightohne Argumente ausführen oder Folgendes ausführen: :so $VIMRUNTIME/syntax/hitest.vimÖffnen Sie ein neues Fenster, in dem alle aktuellen Hervorhebungen angezeigt werden.

    In den Abschnitten am Ende dieser Antwort finden Sie Tipps, wie Sie dies mit einem benutzerdefinierten Befehl oder durch Einrichten eines neuen Farbschemas schnell erledigen können.

Hintergrundfarbenlöschung (BCE)

Wenn Sie ein Problem mit dem Hintergrund haben, der anders aussieht, wenn er Text enthält, tritt möglicherweise BCE (Background Color Erase) auf. Sie können dies mit dem folgenden Befehl deaktivieren:

:set t_ut=

Hier gibt es eine spezielle Frage , und das Problem wird in diesem Blog-Beitrag ausführlicher behandelt .

Update (Überschreiben von Unterstreichungen):

Aus unserer Diskussion in den Kommentaren geht hervor, dass eines der Probleme darin besteht, dass Ihr Terminal unterstrichenen Text in einer anderen Farbe anzeigt. Sie haben zwei Möglichkeiten, um dies zu umgehen:

  1. Korrigieren Sie Ihre Terminalkonfiguration so, dass unterstrichener Text in derselben Farbe angezeigt wird! Ich kann dir dabei nicht helfen.

  2. Schalten Sie die Unterstreichung in Vim aus. Sie können dies mit dem folgenden :highlightBefehl tun : ZB werden im Folgenden alle Farben / Formatierungen aus den Zeilennummern entfernt:

    :highlight LineNr NONE
    

Ausschalten der Farben mit einem Befehl

Um dies schnell zu erledigen, können Sie einen Befehl einrichten, um alle erforderlichen Schritte auf einmal auszuführen:

 function! TurnOffColors()
   :set t_Co=0
   :highlight LineNr NONE
   :highlight CursorLine NONE
   " Add any other necessary highlight lines here
 endfunction

 command! TurnOffColors call TurnOffColors()

Neues erstellen colorscheme

Alternativ können Sie ein neues Farbschema "NoColorsNoUnderlines" erstellen, in dem Sie die Unterstreichungen entsprechend deaktivieren. Führen Sie dazu den folgenden Befehl aus, um Anweisungen dazu zu erhalten:

:edit $VIMRUNTIME/colors/README.txt

Sie können dieses Schwarz-Weiß-Farbschema als Ausgangspunkt verwenden.

Reich
quelle
Es sieht so aus, als würde es nur untergehen colorscheme default. Zusammen syntax offist es fast das, was ich mir wünsche. Abgesehen davon, dass (1) die Cursorzeile immer noch die aktuelle Zeile unterstreicht und sie weiß färbt; (2) Die Zeilennummern sind noch farbig.
Mateusz Piotrowski
1
@MateuszPiotrowski Ich habe meine Antwort etwas erweitert, was hoffentlich helfen wird. Beachten Sie, dass es nicht wirklich sinnvoll ist zu sagen, dass Vim kein Farbschema verwenden soll, es sei denn, Sie deaktivieren Farben vollständig. Vim zeigt Dinge auf dem Bildschirm an und muss einige Farben verwenden. Die Farben werden durch das Farbschema definiert.
Rich
@MateuszPiotrowski "LineNr" ist die Hervorhebungseinstellung, die sich auf die Farben der Zeilennummern auswirkt.
Rich
3
Eigentlich Re-Lektüre Ihrer Frage, es sieht aus wie vielleicht haben Sie es gerade die Farben ganz ausschalten wollen. :set t_Co=0werde das für dich tun.
Rich
Keine dieser Optionen funktioniert wie erwartet. vim -u NONEBeginnt mit dem Hintergrund und dem Vordergrund des Terminals, lädt jedoch kein vimrc. Ich frage mich, was ich deaktivieren soll, um diesen Effekt zu erzielen.
Mateusz Piotrowski
2

set t_Co=0bricht bestimmte Vim-Funktionen ab, wie z. B. ^X^Odie Hervorhebung grundlegender Begriffe (fett, unterstrichen).

Sie könnten so etwas wie Nofrils verwenden und die anpassen hi Normal cterm=none ctermfg=none ctermbg=none. Davon abgesehen sehe ich keinen anderen Weg, ohne Ihre Vim-Erfahrung durcheinander zu bringen.

JustUseEmacs
quelle