2008-09-12 10 views
44

Hat jemand andere gefunden VIM Syntax Hervorhebung von Javascript suboptimal? Ich stelle fest, dass ich manchmal blättern muss, um die Syntaxhervorhebung anzupassen, da manchmal alle Hervorhebungen auf mysteriöse Weise gelöscht werden.Javascript Syntax Hervorhebung in vim

Gibt es Workarounds oder Möglichkeiten, dies zu beheben? Ich benutze vim 7.1.

Antwort

29

Sie können dieses improved Javascript syntax highlighter lieber versuchen als das, das mit VIMRUNTIME geliefert wird.

+0

Schön. Es unterstützt sogar die Hervorhebung für jsdoc. Vielen Dank! – asksol

+0

Vorsicht: Ich stelle fest, dass der Autor des verbesserten Textmarkers in der neuesten Version von der Syntax-Synchronisierung weg geändert wurde ... Das Problem, das Sie gesehen haben, kann also in diesem Textmarker auftreten. Sieht aus wie in der Vergangenheit, es hat immer von Anfang an getan. –

+0

Ich habe sowohl das 9/12/08 Release als auch das Release vom 17.05.07 ausprobiert und keines verbessert die Situation. Das Öffnen einer komplexen Javascript-Datei in der Mitte führt immer noch zu keiner Hervorhebung, und ich muss mehrere Seiten scrollen, damit vim korrekt hervorhebt. –

12

Syntax Färbung Synchronisierung muss wahrscheinlich Anpassung. Ich habe in bestimmten Kontexten gefunden, dass ich es ändern muss.

Die Syntax-Synchronisierung (": help syn-sync") steuert, wie vim den Code für die Farbgebung verfolgt und aktualisiert, damit er überall in der Datei zeichnen kann.

Die Vorgaben für mich nicht immer funktionieren, so dass manchmal finde ich mich

:syn sync fromstart 

Ausgabe Ich schlage vor, durch die Dokumentation unter

:help syn-sync 

lesen oder überprüfen gerade

:help syntax 

und finden Sie den Abschnitt über die Synchronisation.

, um eine fundierte Entscheidung zwischen den vier verfügbaren Grundoptionen zu treffen. Ich verwalte Mappings zu Funktionstasten, um zwischen den Modi "fromstart" und "ccomment" zu wechseln und nur die Synchronisierungseinstellungen zu löschen.

3

Für eine schnelle und schmutzige Lösung, manchmal scrolle ich nur nach oben und unten und die Hervorhebung passt sich an. Ctrl + L für eine Bildschirmaktualisierung kann es auch beheben.

15

Nun, ich habe Yi Zhao's Javascript Syntax geändert, und fügte Ajax Keywords Unterstützung, markieren Sie auch DOM-Methoden und andere.

Hier ist es, es ist weit davon entfernt perfekt zu sein, da ich noch neu bei Vim bin, aber bis jetzt hat es Arbeit für mich. My Javascript Syntax. Wenn Sie reparieren können, fügen Sie Funktionen hinzu, bitte.

UPDATE: Ich habe vergessen, diese Syntax Highlights werden nur angezeigt, wenn Sie sie in Ihrem eigenen Farbschema enthalten, wie ich es in meinem Farbschema getan habe. Ich werde testen, ob ich diese Zeile in meine modifizierte Syntaxdatei einfügen könnte.

Folgen Sie der neuen Version der Javascript-Syntax-Datei in github, denn es ist nicht mehr erforderlich, Ihre aktuelle Farbschema zu ändern.

+0

Ich mag das Aussehen Ihrer Screenshots, aber Ihre Syntaxdatei ist nicht ' t tu etwas anders als die Standard-vim-js-Syntax, wenn ich es lade. Ich habe andere benutzerdefinierte Syntax-Dateien, also frage ich mich, warum Ihre nicht funktioniert .. – djeikyb

+0

Mine basiert auf Yi Zhao, die ich weit überlegen als die Standard-Vim-js-Syntax finde. Außerdem habe ich meinem 'Nazca' Farbschema für vim zusätzliche Zeilen hinzugefügt. Ich habe nicht versucht, diese Zeilen direkt zu der modifizierten Syntaxdatei hinzuzufügen. Eigentlich ist es sehr einfach und einfach, diese Linien zu Ihrem eigenen Farbschema hinzuzufügen. –

+0

Ah, es hat nichts getan, weil ich nicht gesehen habe, dass Sie auch zusätzliche Linien zu jedem Farbschema hinzufügen mussten. Hab es jetzt verstanden. Vielen Dank! – djeikyb

3

Dies ist ein wirklich alter Post, aber ich hatte das gleiche Problem: manchmal Syntax-Highlight würde nur aufhören zu arbeiten, wenn Sie den Javascript-Abschnitt in einer .html Datei. Wie das OP erwähnt, war ein schneller Workaround, um nach oben zu scrollen und dann magisch wieder etwas zu markieren.

Heute fand ich das zugrunde liegende Problem und eine gute Lösung. In Vim verwendet die Syntaxhervorhebung einen Kontext, um die richtige Hervorhebung abzuleiten, wobei der Kontext durch die vorherigen Zeilen definiert wird.Es ist möglich, durch Ausgabe von :syntax sync minlines=200 anzugeben, wie viele Zeilen vor der aktuellen Zeile verwendet werden. In diesem Fall werden bis zu 200 vorherige Zeilen als Kontext verwendet. Es ist möglich, die gesamte Datei (die für lange Dateien langsam sein kann) zu verwenden, indem Sie :syntax sync fromstart ausführen.

Sobald ich das gefunden, habe ich diese Zeile in meinem .vimrc:

autocmd BufEnter *.html :syntax sync fromstart 

Hierdurch .html Dateien die gesamte Datei als Kontext verwendet wird. Daher wird der JavaScript-Abschnitt immer richtig hervorgehoben, unabhängig davon, wie lang der JS-Abschnitt ist. Hoffe das hilft jemand anderen da draußen!

+0

Dies ist die beste Lösung, um HTML/JS-Syntax-Highlight-Problem zu beheben. Ich weiß nicht, warum VIM immer noch diesen Fehler hat, der nicht behoben werden konnte. https://github.com/vim/vim/issues/1775 – northtree