14 Stimmen

Gvim langer mehrzeiliger Zeichenfolgen-Hervorhebung

Ich mache ausgiebig Gebrauch von mehrzeiligen Docstrings in meinem Python-Quellcode, um Doctests einzuschließen. Leider scheint vim/gvim Schwierigkeiten mit der Syntaxhervorhebung zu haben, wenn es gelegentlich seinen Platz verliert und vergisst, dass es sich mitten in einem Zeichenkettenliteral befindet, und die Hervorhebung "umschaltet" von Zeichenkette zu Quelle und Quelle zu Zeichenkette.

Ich kann nach oben scrollen und wieder nach unten, und vim normalerweise behebt das Problem, aber manchmal dauert es ein paar Versuche.

Gibt es eine Möglichkeit, vim zu helfen, die Hervorhebung bei diesen langen Literalen in Ordnung zu halten, abgesehen davon, meine Docstrings kürzer zu machen?

18voto

PonyEars Punkte 2035

:syntax syn Steuert, wie Vim den Syntaxzustand synchronisiert, der an einem bestimmten Punkt im Text angewendet werden sollte (:help syn-sync). Für die genaueste Synchronisation (aber dies wird Vim verlangsamen), versuchen Sie:

autocmd BufEnter * :syntax sync fromstart

Oder wenn Sie manuell synchronisieren möchten, immer wenn Sie bemerken, dass es falsch ist, versuchen Sie diesen Befehl (Sie könnten ihn einer Tastenkombination zuordnen):

:syntax sync fromstart

Sie könnten auch minlines nützlich finden. Aus :help syn-sync

Wenn das Argument "minlines={N}" angegeben wird, beginnt das Parsen immer mindestens so viele Zeilen rückwärts. Dies kann verwendet werden, wenn das Parsen einige Zeilen benötigt, bevor es korrekt ist, oder wenn es nicht möglich ist, eine Synchronisierung zu verwenden.

Daher kann es Ihnen helfen, dies in Ihre .vimrc zu setzen:

syntax sync minlines=500

Bearbeitung: Ich habe diese Seite gefunden, auf der alles steht, was Sie brauchen: http://vim.wikia.com/wiki/Fix_syntax_highlighting

0 Stimmen

Ich verwende syn sync fromstart regelmäßig (aber nicht immer ganz) und habe noch nie wirklich eine Verlangsamung bemerkt, auch wenn ich mehrere hundert Kilobyte große JavaScript-Dateien bearbeite. Moderne Hardware ist ziemlich leistungsfähig. Besonders nützlich finde ich es bei HTML.

0 Stimmen

Richtig. Nur als Referenz, auf einem Core i7 mit 8 GB RAM und einer schnellen Festplatte ist der Punkt, an dem eine Verlangsamung wahrnehmbar ist, wenn ich über etwa 60.000 normal lange Zeilen (Dateigröße von ca. 2,5 MB) hinausgehe.

2voto

Al P. Punkte 595

Sie möchten wahrscheinlich nicht synchronisieren � für alle Arten von Code, die Sie bearbeiten, sondern nur für HTML. Wenn das der Fall ist, fügen Sie dies zu Ihrem vimrc hinzu:

 autocmd FileType html autocmd BufEnter * :syntax sync fromstart

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X