¿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.

Respuestas:


109

También puede poner esto en su .vimrc:

au BufReadPost *.ezt set syntax=html

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

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.


¡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.


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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.