Comment forcer vim à mettre en évidence la syntaxe d'un fichier au format HTML?


120

Comment définir la coloration syntaxique de vim pour traiter une extension de fichier comme un fichier html?

J'utilise le modèle ez, donc l'extension du fichier est .ezt. Mais il s'agit en grande partie de code html normal.

Réponses:


109

Vous pouvez également mettre ceci dans votre .vimrc:

au BufReadPost *.ezt set syntax=html

E216: Aucun groupe ou événement de ce type: BufLoad * .ezt set syntax = html ... qu'est-ce que je fais de mal?
Karthick

2
D'après mon expérience, cette approche échouera si vous donnez un nom de fichier exact, par exemple .myspecialdotfile. Il a besoin d'une étoile quelque part pour travailler, même si ce n'est théoriquement pas nécessaire.
SeldomNeedy

Je l'ai dans mon .vimrcfichier pour Dockerfiles qui ont des extensions à des fins différentes. autocmd BufNewFile, BufRead Dockerfile * set filetype = docker Le simple fait d'utiliser Dockerfile*empêche la mise en évidence de la syntaxe de fonctionner lors de l'utilisation vi Dockerfile- l'ajout de la barre oblique inverse lui permet de fonctionner pour Dockerfile/ Dockerfile.somethingetDockerfilesomething
Contrôle Android

204
:set syntax=html

10
@pbr: qui répond exactement au titre de la question.
Skippy le Grand Gourou

2
> "traiter une extension de fichier comme un fichier html"
0atman

c'est ce que je cherchais :)
niken

Pourrait aider à savoir que l'exécution :set syntaxrenverra la mise en évidence du fichier actuellement appliqué
Ari

26

Jetez un œil à ce sujet Wikia Vim . Quelques conseils utiles:

  • Comme d'autres réponses l'ont mentionné, vous pouvez utiliser la commande vim set pour définir la syntaxe. :set syntax=<type><type>est quelque chose comme perl, html, php, etc.

  • Il existe un autre mécanisme qui peut être utilisé pour contrôler la coloration syntaxique appelée filetype, ou ftpour faire court. Semblable à la syntaxe, vous lui donnez un type comme ceci: :set filetype=html. D' autres types de fichiers sont perl, php, etc.

  • Parfois, vim «oublie» la syntaxe à utiliser, surtout si vous mélangez des éléments tels que php et html. Utilisez le raccourci clavier Ctrl+ L( <C-L>) pour obtenir vim pour actualiser la mise en évidence.


Meilleure réponse! +!
J. Allan

17

Notez que cela :set syntax=xmlmet en évidence correctement mais semble échouer lorsque l'on tente d'auto-identifier le fichier (c'est-à-dire en cours d'exécution gg=G).

Lorsque je suis passé à :set filetype=xml, la mise en évidence a fonctionné correctement et le fichier est correctement mis en retrait.


14

Dans un fichier .php (ou un fichier html), vous pouvez utiliser un Vim Modeline pour forcer certaines commandes ou certains paramètres:

 1 /* vim: syntax=javascript
 2  *
 3  * .submit_norefresh()
 ~
 ~

2
Vous voulez dire Modeline
Shammel Lee

Parfois, les au ...paramètres liés à la syntaxe dans mon ~/.vimrcsont ignorés pour certains fichiers (probablement en raison de métadonnées modifiées?). Autre que la copie de ce contenu de fichier dans un nouveau fichier, la définition d'une ligne de modèle en haut de ce fichier fonctionne. Par exemple, pour un script BASH, l'ajout d'une deuxième ligne, # vim: syntax=shaprès le shebang (première ligne:) #!/bin/bashsemble fonctionner, de manière fiable. Puisqu'il s'agit essentiellement d'un "commentaire", j'inclus simplement les deux lignes dans mon sbbextrait ("shebang bash").
Victoria Stuart

13

Pour le rendre automatique, ajoutez cette ligne à votre ~/.vimrc:

autocmd BufNewFile,BufRead *.ezt set filetype=html

Si vous voulez le faire uniquement pour le fichier actuel, tapez:

:set filetype=html

Vous pouvez également remplacer à la syntaxplace de filetype, mais filetypeaffecte plus de choses quesyntax (y compris la coloration syntaxique, les règles d'indentation et les plugins), vous devriez donc généralement utiliser à filetypemoins que vous ne vouliez seulement affecter syntax.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.