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.

Antworten:


108

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

au BufReadPost *.ezt set syntax=html

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


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.


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.


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()
 ~
 ~

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.