¿Cómo forzar a vim a resaltar la sintaxis de un archivo como html?

120

¿Cómo configuro el resaltado de sintaxis de vim para tratar una extensión de archivo como un archivo html?

Estoy usando la plantilla ez, por lo que la extensión del archivo es .ezt. Pero mucho es código html normal.

Karthick
fuente

Respuestas:

109

También puede poner esto en su .vimrc:

au BufReadPost *.ezt set syntax=html
Benoit
fuente
E216: No existe tal grupo o evento: BufLoad * .ezt set syntax = html ... ¿qué estoy haciendo mal?
Karthick
2
En mi experiencia, este enfoque fallará si proporciona un nombre de archivo exacto, por ejemplo .myspecialdotfile. Necesita una estrella en algún lugar para funcionar, incluso si teóricamente no es necesario.
SeldomNeedy
Tengo esto en mi .vimrcarchivo para Dockerfiles que tienen extensiones para diferentes propósitos. autocmd BufNewFile, BufRead Dockerfile * set filetype = docker El solo uso Dockerfile*evita que el resaltado de sintaxis funcione cuando se usa vi Dockerfile; agregar la barra invertida permite que funcione para Dockerfile/ Dockerfile.somethingyDockerfilesomething
Control de Android
204
:set syntax=html
Ámbar
fuente
10
@pbr: que responde exactamente al título de la pregunta.
Skippy le Grand Gourou
2
> "tratar una extensión de archivo como un archivo html"
0atman
esto es lo que estaba buscando :)
niken
Podría ayudar saber que la ejecución :set syntaxdevolverá el resaltado del archivo aplicado actualmente
Ari
26

Eche un vistazo a este tema de la wikia de Vim . Algunos consejos útiles:

  • Como han mencionado otras respuestas, puede usar el comando vim set para establecer la sintaxis. :set syntax=<type>donde <type>es algo así como perl, html, php, etc.

  • Hay otro mecanismo que se puede utilizar para controlar el resaltado de sintaxis llamado filetype, o ftpara abreviar. De manera similar a la sintaxis, que le dan un tipo como este: :set filetype=html. Otros tipos de archivos son perl, php, etc.

  • A veces vim "olvida" qué sintaxis usar, especialmente si está mezclando cosas como php y html. Use el atajo de teclado Ctrl+ L( <C-L>) para que vim actualice el resaltado.

slm
fuente
¡La mejor respuesta! +!
J. Allan
17

Tenga en cuenta que se :set syntax=xmlresalta correctamente pero parece fallar cuando se intenta aplicar una sangría automática al archivo (es decir,gg=G ).

Cuando cambié a :set filetype=xml, el resaltado funcionó correctamente y el archivo se sangraron correctamente.

Daniel
fuente
14

En un archivo .php (o un archivo html), puede usar un Vim Modeline para forzar ciertos comandos o configuraciones:

 1 /* vim: syntax=javascript
 2  *
 3  * .submit_norefresh()
 ~
 ~
Ярослав Рахматуллин
fuente
2
Te refieres a Modeline
Shammel Lee
A veces, la au ...configuración relacionada con la sintaxis en mi ~/.vimrcse ignora para ciertos archivos (¿presumiblemente debido a metadatos modificados?). Además de copiar el contenido de ese archivo a un archivo nuevo, establecer una línea de modo en la parte superior de ese archivo funciona. Por ejemplo, para un script BASH, agregar una segunda línea, # vim: syntax=shdespués de que el shebang (primera línea :) #!/bin/bashparece funcionar, de manera confiable. Como es básicamente un "comentario", solo incluyo ambas líneas en mi sbbfragmento ("shebang bash").
Victoria Stuart
13

Para hacerlo automático, agregue esta línea a su ~/.vimrc:

autocmd BufNewFile,BufRead *.ezt set filetype=html

Si solo desea hacerlo para el archivo actual, escriba:

:set filetype=html

También puede sustituir en syntaxlugar de filetype, pero filetypeafecta a más cosas quesyntax (incluido el resaltado de sintaxis, las reglas de sangría y los complementos), por lo que generalmente debe usar a filetypemenos que solo desee afectar syntax.

Wisbucky
fuente