Wie kann man vim zwingen, eine Datei als HTML syntaktisch hervorzuheben?

119

Wie setze ich die Syntaxhervorhebung von vim, um eine Dateierweiterung als HTML-Datei zu behandeln?

Ich verwende die ez-Vorlage, daher lautet die Dateierweiterung .ezt. Aber vieles davon ist normaler HTML-Code.

Karthick
quelle

Antworten:

108

Sie können dies auch in Ihre .vimrc einfügen:

au BufReadPost *.ezt set syntax=html
Benoit
quelle
E216: Keine solche Gruppe oder kein solches Ereignis: BufLoad * .ezt set syntax = html ... was mache ich falsch?
Karthick
2
Nach meiner Erfahrung schlägt dieser Ansatz fehl, wenn Sie einen genauen Dateinamen angeben, z .myspecialdotfile. Es braucht irgendwo einen Stern, um zu arbeiten, auch wenn es theoretisch nicht notwendig ist.
Selten Needy
Ich habe dies in meiner .vimrcDatei für Docker-Dateien, die Erweiterungen für verschiedene Zwecke haben. autocmd BufNewFile, BufRead Dockerfile * set filetype = docker Nur die Verwendung Dockerfile*verhindert , dass die Syntaxhervorhebung bei der Verwendung funktioniert vi Dockerfile- das Hinzufügen des Backslashs ermöglicht das Arbeiten für Dockerfile/ Dockerfile.somethingundDockerfilesomething
Android Control
204
:set syntax=html
Bernstein
quelle
10
@pbr: welches genau den Fragentitel beantwortet.
Skippy le Grand Gourou
2
> "
Behandle
das ist was ich gesucht habe :)
niken
Könnte helfen zu wissen, dass beim Ausführen :set syntaxdie aktuell angewendete Datei-Hervorhebung zurückgegeben wird
Ari
26

Schauen Sie sich dieses Vim-Wikia-Thema an . Einige nützliche Tipps:

  • Wie bereits in anderen Antworten erwähnt, können Sie mit dem Befehl vim set die Syntax festlegen. :set syntax=<type>wo <type>ist so etwas wie perl, html, phpusw.

  • Es gibt einen anderen Mechanismus, mit dem die Syntaxhervorhebung aufgerufen werden kann filetype, oder ftkurz. Ähnlich wie bei der Syntax geben Sie einen Typ wie folgt an : :set filetype=html. Andere Dateitypen sind perl, phpusw.

  • Manchmal "vergisst" vim, welche Syntax verwendet werden soll, besonders wenn Sie Dinge wie PHP und HTML miteinander mischen. Verwenden Sie die Tastenkombination Ctrl+ L( <C-L>), um vim zum Aktualisieren der Hervorhebung zu bewegen.

slm
quelle
Beste Antwort! +!
J. Allan
17

Beachten Sie, dass die :set syntax=xmlHervorhebungen ordnungsgemäß hervorgehoben werden, jedoch fehlschlagen, wenn versucht wird, die Datei automatisch einzurücken (dh auszuführen gg=G).

Als ich zu wechselte :set filetype=xml, funktionierte die Hervorhebung ordnungsgemäß und die Datei wurde ordnungsgemäß eingerückt.

Daniel
quelle
14

In einer .php-Datei (oder einer HTML-Datei) können Sie eine Vim-Modeline verwenden , um bestimmte Befehle oder Einstellungen zu erzwingen:

 1 /* vim: syntax=javascript
 2  *
 3  * .submit_norefresh()
 ~
 ~
Ярослав Рахматуллин
quelle
2
Du meinst Modeline
Shammel Lee
Manchmal werden die syntaxbezogenen au ...Einstellungen in meinem ~/.vimrcfür bestimmte Dateien ignoriert (vermutlich aufgrund geänderter Metadaten?). Abgesehen vom Kopieren des Dateiinhalts in eine neue Datei funktioniert das Festlegen einer Modeline oben in dieser Datei. Zum Beispiel scheint für ein BASH-Skript das Hinzufügen einer zweiten Zeile # vim: syntax=shnach dem Shebang (erste Zeile :) #!/bin/bashzuverlässig zu funktionieren. Da es sich im Grunde genommen um einen "Kommentar" handelt, sbbfüge ich einfach beide Zeilen in mein ("shebang bash") - Snippet ein.
Victoria Stuart
13

Um es automatisch zu machen, fügen Sie diese Zeile zu Ihrem hinzu ~/.vimrc:

autocmd BufNewFile,BufRead *.ezt set filetype=html

Wenn Sie dies nur für die aktuelle Datei tun möchten, geben Sie Folgendes ein:

:set filetype=html

Sie können auch syntaxanstelle von ersetzen filetype, filetypewirkt sichsyntax jedoch auf mehr Dinge aus als (einschließlich Syntaxhervorhebung, Einrückungsregeln und Plugins). Daher sollten filetypeSie diese generell verwenden, es sei denn, Sie möchten nur Auswirkungen haben syntax.

wisbucky
quelle