Die Syntaxfarbe ist für HTML-Dateien mit CSS-Code ungenau

Sep 25 2020

Wie Sie im folgenden Screencast sehen können, gibt es beim Öffnen einer HTML-Datei mit etwas CSS einen Teil der Datei, der keine Syntaxfarbe aufweist. Hast du Erfahrung damit? Ist es normal, wenn man wie in diesem Fall mehrere Sprachen in einer Datei hat?

Antworten

5 JakeGrossman Sep 25 2020 at 01:47

Manchmal verliert Vim den Überblick darüber, woher es hervorgehoben wird, insbesondere in komplexen Szenarien (in diesem Beispiel verschachtelte Sprachen).

Mit dem :syn syncBefehl können Sie Vim mitteilen, wo die Syntaxhervorhebung synchronisiert werden soll . Von :h :syn-sync:

Es gibt vier Möglichkeiten zum Synchronisieren:

  1. Analysieren Sie immer vom Anfang der Datei an.
  2. Basierend auf Kommentaren im C-Stil. Vim versteht, wie C-Kommentare funktionieren, und kann herausfinden, ob die aktuelle Zeile innerhalb oder außerhalb eines Kommentars beginnt.
  3. Springe eine bestimmte Anzahl von Zeilen zurück und beginne dort mit dem Parsen.
  4. Suchen Sie im Text rückwärts nach einem Muster, das synchronisiert werden soll.

Da wir nicht wissen, wie lang der <style>Block sein wird, und wir keine Kommentare im C-Stil verwenden, bleiben uns zwei Lösungen (1 und 4).

Lösung 1 ist die einfachere von beiden und erfordert eine einzelne Zeile in ~/.vim/after/syntax/html.vim:

syntax sync fromstart

Dadurch wird Vim angewiesen, immer vom Anfang der Datei an zu synchronisieren. Dies kann bei langen Dateien langsam sein. Vim speichert jedoch zuvor analysierten Text zwischen, sodass die Datei nur dann erneut analysiert werden muss, wenn und wo dies erforderlich ist.