Dies könnte ein Problem mit dem vim-System zum Erkennen und anschließenden Hervorheben syntaktischer "Schlüsselwörter" sein, die nicht genügend Kontext zum Erkennen von Schlüsselwörtern erhalten.
Die grundlegenden Konzepte des Syntaxsystems von vim (Suchen und Kennzeichnen grundlegender Syntaxelemente) werden in erläutert :h usr_44
Grundsätzlich verwendet vim Regex, um syntaktische Elemente in einer Datei zu erkennen. Sobald diese identifiziert sind, werden Hervorhebungsregeln angewendet, um diese Codekonstrukte einzufärben (dh "Syntaxhervorhebung" durchzuführen), aber wie in :h 44.10
vim erläutert, beginnt das Parsen nicht mit dem Am Anfang der Datei werden einige Zeilen (z. B. 10 oder 100 Zeilen) vom oberen Rand Ihres aktuellen Ansichtsfensters nach oben gestartet.
Wenn ein syntaktisches Konstrukt, z. B. ein sich öffnendes HTML-Tag oder eine Funktionsdefinition usw., höher beginnt als der Punkt, an dem vim mit dem Parsen beginnt, wird der reguläre Ausdruck der vims-Syntax unterbrochen.
Um dies zu beheben, erhöhen Sie normalerweise den Punkt, an dem vim mit dem Parsen beginnt.
Um herauszufinden, wie viele Zeilen über der obersten Zeile des Ansichtsfensters vim mit der Analyse beginnt, verwenden Sie Folgendes:
:syntax sync
Hier ist meine Ausgabe beim Anzeigen einer HTML-Datei:
:syntax sync
--- Syntax sync items ---
syncing on items; minimal 10, maximal 100 lines before top line
[lots of other output here...]
Wenn ich ein Problem mit der Synchronisierung hätte - nur für diese Datei - würde ich die Minlines mit erhöhen
:syntax sync minlines=200
Wenn Sie dieses Problem wiederholt beheben, ist es etwas schwieriger. Dies liegt daran, dass der Synchronisierungswert häufig in einer Syntaxdatei festgelegt wird, die dem von Ihnen bearbeiteten syntax sync minlines
Dateityp zugeordnet ist , z. B. für mich, dass HTML-Dateitypen in der Syntaxdatei festgelegt sind
/usr/share/vim/vim74/syntax/html.vim
Syntaxanalyse und Konfigurationswerte für CSS-Dateien sind in
/usr/share/vim/vim74/syntax/css.vim
Shell ist in sh.vim
und so weiter.
Diese Syntax - Skripten nur zu dem Zeitpunkt Sie eine Datei des Typs öffnen laufen foo.css
, bar.html
, baz.sh
usw., also eine Zeile in Ihrer vimrc Einstellung wird nicht funktionieren , weil diese Skripte würden davon entfernt Ihre Einstellungen blasen, eine Lösung ist eine autocmd welche Auslöser , wenn Sie verwenden Geben Sie die Datei ein
autocmd BufEnter *.html :syntax sync minlines=200