Persistent: Syntax für einen bestimmten Dateityp festlegen?

102

Ich arbeite an einem Symfony2-Projekt, das Twig verwendet, und die Dateitypen sind myfile.html.twig. Vim erkennt die Syntaxhervorhebung nicht automatisch und wendet daher keine an. Ich kann verwenden, :set syntax=HTMLnachdem ich die Datei geöffnet habe, aber dies ist ein Schmerz beim Wechseln zwischen Dateien.

Gibt es eine Möglichkeit, die Syntaxhervorhebung für einen bestimmten Dateityp in vim dauerhaft festzulegen?

Bendihossan
quelle

Antworten:

114

Sie können verwenden, autocmdum dies zu erreichen, dh:

augroup twig_ft
  au!
  autocmd BufNewFile,BufRead *.html.twig   set syntax=html
augroup END

Sollte arbeiten.

Hauleth
quelle
4
Ein Freund hat mich auch darauf hingewiesen. Legen Sie den Dateityp fest: Legen au BufRead,BufNewFile *.html.twig set filetype=twigSie die Syntax fest:au BufRead,BufNewFile *.html.twig set syntax=HTML
Bendihossan
27
Ich würde vorschlagen, diese Zeile in eine ~/.vim/ftdetect/html.twig.vimDatei zu setzen (Sie sollten sie erstellen), was der richtige Ort für solche automatischen Befehle ist.
Xaizek
@xaizek Ich verstehe, dass dies empfohlen wird, aber haben Sie eine Idee, warum es bei mir nicht funktioniert, wenn ich ~/.vimrcstattdessen einsetze ~/.vim/ftdetect/?
Haralan Dobrev
2
@ HaralanDobrev, es wird wahrscheinlich durch einen anderen nach dieser Zeile definierten Autobefehl überschrieben. Führen Sie :autocmd BufNewFile,BufRead *.html.twiginnerhalb Vim alle registrierten automatischen Befehle , um zu sehen (auch versuchen , mit getrennten Ereignissen, nur BufNewFileund nur BufRead). Überprüfen Sie auch die Ausgabe von :verbose set syntax?.
Xaizek
1
Wie einfach es war, diese Lösung zu finden, lässt mich wünschen, dass das Vim-Wiki nicht existiert
Jared Beach
59

Fügen Sie eine der folgenden Passagen hinzu .vimrc:

" Set the filetype based on the file's extension, overriding any
" 'filetype' that has already been set
au BufRead,BufNewFile *.html.twig set filetype=html

oder

" Set the filetype based on the file's extension, but only if
" 'filetype' has not already been set
au BufRead,BufNewFile *.html.twig setfiletype html
Muhammad Reda
quelle
6
Dies ist eine bessere generische Antwort als die akzeptierte. Wenn vim den Dateityp nicht erkennen kann (und automatisch eine Syntaxhervorhebung bereitstellt), ist es besser, den Dateityp festzulegen, als nur die Syntax der Datei.
Herr Alfred
1
setfiletypesollte sein set filetypeZumindest könnte ich es so machen
dau_sama
1
@dau_sama setfiletype=htmlist keine gültige Syntax; Ich habe die Antwort korrigiert. Hinweis , dass setfiletype htmlund set filetype=htmlverschiedene Dinge tun, wie in der Antwort erwähnt.
Bdesham
10
au BufNewFile,BufRead,BufReadPost *.twig set syntax=HTML

Fügen Sie diese Zeile hinzu ~/.vimrc, um die Einstellungen dauerhaft zu machen.

Igor Chubin
quelle
2

Ich weiß, dass dies die Frage nicht direkt beantwortet, aber dies beantwortet die Absicht der Frage, die Syntaxhervorhebung bei Twig / Symfony 2 zu erreichen

Ich schlage vor, Sie besuchen https://github.com/beyondwords/vim-twig (nicht meins), das Folgendes bietet:

  • die Syntax-Hervorhebungsdatei für * .html.twig,
  • Dateityperkennung für dasselbe und
  • Dateityp-Plugin, mit dem Sie beim Bearbeiten von * .html.twig-Dateien verschiedene Einstellungen nach Bedarf ändern können

ich hoffe das hilft

ebonhand
quelle