Ich benutze jinja Vorlagensprache, um HTML und Javascript für eine Webseite zu generieren. Wie kann ich vim verstehen lassen, dass alles zwischen '{{'/'}}'
und '{%'/'%}'
Jinja-Code ist und der Rest es Javascript-Code? Gibt es eine einfache Möglichkeit, das zu tun?
Für die Syntax macht mein SyntaxRange-Plugin die Einrichtung so einfach wie einen einzigen Funktionsaufruf .
Für verschiedene Dateitypeinstellungen, wie Einrückungsoptionen, müssen Sie ein :autocmd CursorMoved,CursorMovedI
installieren, das überprüft, in welche Region die aktuelle Zeile fällt (eventuell mit der Syntax für Hinweise, zB mit synID()
), und dann die Optionswerte vertauscht auf das Ergebnis.
Bearbeiten : Für Ihren speziellen Anwendungsfall wäre das etwa so:
%Vor%, das Sie in ~/.vim/after/syntax/javascript.vim
einfügen können, um es automatisch auf alle JavaScript-Dateien anzuwenden.
Es gibt eine relativ einfache Möglichkeit, verschiedene Bereiche in Ihrem Code zu verwenden, die unterschiedliche Syntaxdateien verwenden, indem Sie den Befehl "Syntax include" und einen Befehl "syntax region" verwenden, um jede Region zu definieren. Unten ist ein Code, mit dem ich unterschiedliche Regionen von Perl, R und Python in einem einzigen Dokument markieren kann. Die 'unlet'-Anweisungen sind notwendig, da die Syntaxdateien oft von b: current_syntax abhängig sind, wenn sie zum ersten Mal ausgeführt werden. Ihr wäre ähnlich, aber definieren Sie "Start" und "Ende" für die Regionen jinja und javascript mit den Begrenzern, die Sie in Ihrer Frage aufgelistet haben. Überprüfen Sie die Hilfe für "syn-region" und "syn-include", um weitere Informationen zu erhalten:
%Vor%Ich bin mir nicht sicher, wie man in den Regionen unterschiedliche Auto-Indenting-Einstellungen erhält, das ist eine Frage, die ich mir selbst stellen wollte. Ich denke, eine Lösung wäre, alle Spracheinzugsdateien in einem zu konsolidieren und eine If-Struktur zu haben, die entsprechend der Region, in der sie sich befindet, verarbeitet. Vielleicht gibt es jedoch einen einfacheren Weg.
Tags und Links vim