Wie kann ich hervorheben, dass Hervorhebungsbefehle in .vimrc mit Vim 7.4 sofort wirksam werden?

9

Ich habe mehrere highlightBefehle in meiner .vimrcDatei. In Vim 7.3 wurden diese unmittelbar nach dem Start von Vim wirksam. Nach dem Update auf Vim 7.4 ist dies nicht mehr der Fall. Vim verwendet zunächst die Standardhervorhebung. Wenn ich .vimrcein zweites Mal durch Ausführen lade source ~/.vimrc, funktioniert das Hervorheben wie gewünscht.

Sie sollten dieses Problem mit den folgenden Schritten reproduzieren können:

  1. Erstellen Sie eine Kopie Ihrer .vimrcDatei.

  2. Ersetzen Sie ~/.vimrcdurch eine Datei, die nur die Zeile enthält highlight Type ctermfg=28 cterm=bold.

  3. Führen Sie vim dummy.cein 256-Farben-Terminal aus (z. B. GNOME-Terminal).

  4. Geben Sie intin den Puffer ein. Die intsollten in normaler Schrift erscheinen und hellgrün gefärbt sein, was ich nicht will.

  5. Geben Sie ein :source ~/.vimrc. Jetzt intsollte das fett gedruckt und dunkelgrün gefärbt sein.

Gemäß dem Artikel Steuern / Konfigurieren von VIM-Farben sollte es in Ordnung sein, nur die highlightBefehle einzugeben .vimrc. Der Artikel sagt, dass Sie syntax enablenach den highlightBefehlen setzen sollten , aber dies machte keinen Unterschied.

Mein erstes fix war jeden vorangestellt highlightBefehl in .vimrcmit autocmd VimEnter *. Dies funktionierte für einige Dateitypen, jedoch nicht für andere (C-Dateien sind ein Beispiel).

Was ist der Grund für dieses Verhalten? Wie kann ich die highlightBefehle beim Starten von Vim so ausführen lassen, dass sie für alle Puffer während der gesamten Vim-Sitzung wirksam werden?

Wolfgang Jeltsch
quelle
klingt wie Ausgabe 542
Christian Brabandt
Ja, wenn Sie set compatiblezu Beginn hinzufügen .vimrc, funktioniert die Syntaxhervorhebung wie erwartet. Das scheint also wirklich dieser Fehler in Aktion zu sein.
Wolfgang Jeltsch
Ich habe den highlightBefehlen vorangestellt autocmd ColorScheme *, was als Problemumgehung im Fehlerbericht vorgeschlagen wurde. Es funktioniert immer noch nicht. ☹
Wolfgang Jeltsch
Ich schreibe jetzt mein eigenes Farbschema, das anscheinend auch diesen Fehler umgeht.
Wolfgang Jeltsch
Christian, kannst du einfach deinen Kommentar als Antwort schreiben? Immerhin ist dies die richtige Antwort auf mein Problem. Oder gibt es einen anderen Ansatz für den Umgang mit Fragen, die tatsächlich Fehler aufdecken?
Wolfgang Jeltsch

Antworten:

5

Dies ist keine eindeutige Antwort und Ihr Problem klingt wie Problem 542 . Anscheinend können Sie es umgehen, indem Sie Ihr eigenes Grundfarbschema schreiben, anstatt diese hi ...Anweisungen direkt in Ihre .vimrc zu schreiben.

Christian Brabandt
quelle
Ich denke, das liegt an diesem Vim-Problem. Ihre Antwort scheint also wirklich die richtige Antwort auf mein Problem zu sein.
Wolfgang Jeltsch
3

Eigentlich sollten Sie Ihre benutzerdefinierten Highlights nicht in Ihr vimrc einfügen, sondern in Zollsyntaxdateien.

Diese Dateien sollten sich dort befinden, ~/.vim/after/syntax/filetype.vimwo filetypesich der erwartete Dateityp befindet. Wenn Sie mit einer Syntaxdatei größtenteils zufrieden sind, aber einige Befehle hinzufügen möchten, können Sie die folgenden Schritte ausführen (entnommen aus :h mysyntaxfile-add):

  1. Erstellen Sie dort ein Verzeichnis mit dem Namen "after / syntax". Für Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Schreiben Sie ein Vim-Skript, das die Befehle enthält, die Sie verwenden möchten. So ändern Sie beispielsweise die Farben für die C-Syntax:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Schreiben Sie diese Datei in das Verzeichnis "after / syntax". Verwenden Sie den Namen der Syntax, wobei ".vim" hinzugefügt wird. Für unsere C-Syntax:

    :w ~/.vim/after/syntax/c.vim
    

Das ist es. Wenn Sie das nächste Mal eine C-Datei bearbeiten, unterscheidet sich die Kommentarfarbe. Sie müssen Vim nicht einmal neu starten.

:h mysyntaxfileist ein guter Ort, um Informationen darüber zu erhalten, wie Sie Ihre eigenen Syntaxdateien korrigieren können. Auch Lernen Vimscript The Hard Way als mehrere Kapitel zu diesem Thema.

statox
quelle
2
Was ist, wenn ich die Hervorhebung für alle Dateitypen ändern möchte? Zum Beispiel möchte ich, dass die Farbe der Kommentare dunkelblau ist, unabhängig vom Dateityp.
Wolfgang Jeltsch
Ich habe mehr oder weniger den von Ihnen vorgeschlagenen Ansatz ausprobiert. Ich habe eine Datei hinzugefügt .vimrc/highlighting.vim, ein Verzeichnis erstellt .vimrc/syntax/afterund mehrere symbolische Links der Form * Dateityp * hinzugefügt .vim, die .vimrc/highlighting.vimauf dieses Verzeichnis verweisen . Die Syntaxhervorhebung funktioniert immer noch nicht.
Wolfgang Jeltsch
@ WolfgangJeltsch Yup als mein Beitrag und der Doc sagt, das Verzeichnis sollte ~/.vim/after/syntaxnicht sein~/.vimrc
statox
Das ist richtig. Dies war jedoch nur ein Tippfehler in meinem Kommentar. Eigentlich habe ich im Verzeichnis gearbeitet .vimund die Syntaxhervorhebung hat nicht funktioniert, wahrscheinlich wegen dieses Fehlers 542.
Wolfgang Jeltsch
Nee! funktioniert nicht.
Yar
1

Für das, was es wert ist, hatte ich dieses Problem mit MacVim (8.1.950 (155)). Durch Platzieren der Highlight-Anweisung nach colorscheme.vimrc wurde dies für mich behoben. Z.B:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Halil Özgür
quelle