Como forçar o vim a realçar a sintaxe de um arquivo como html?


120

Como defino o realce de sintaxe do vim para tratar uma extensão de arquivo como um arquivo html?

Estou usando o modelo ez, então a extensão do arquivo é .ezt. Mas muito disso é código html normal.

Respostas:


109

Você também pode colocar isso em seu .vimrc:

au BufReadPost *.ezt set syntax=html

E216: Não existe tal grupo ou evento: BufLoad * .ezt set syntax = html ... o que estou fazendo de errado?
Karthick,

2
Na minha experiência, essa abordagem falhará se você fornecer um nome de arquivo exato, por exemplo .myspecialdotfile. Ele precisa de uma estrela em algum lugar para funcionar, mesmo que teoricamente não seja necessário.
SeldomNeedy,

Eu tenho isso em meu .vimrcarquivo para Dockerfiles que têm extensões para diferentes fins. autocmd BufNewFile, BufRead Dockerfile * set filetype = docker Apenas o uso Dockerfile*evita que o realce de sintaxe funcione ao usar vi Dockerfile- adicionar a barra invertida permite que funcione para Dockerfile/ Dockerfile.somethingeDockerfilesomething
Android Control

204
:set syntax=html

10
@pbr: que responde exatamente ao título da pergunta.
Skippy le Grand Gourou

2
> "tratar uma extensão de arquivo como um arquivo html"
0atman

isso é o que eu estava procurando :)
niken

Pode ajudar saber que a execução :set syntaxretornará o realce do arquivo aplicado atualmente
Ari

26

Dê uma olhada neste tópico da wiki do Vim . Algumas dicas úteis:

  • Como outras respostas mencionaram, você pode usar o comando vim set para definir a sintaxe. :set syntax=<type>onde <type>é algo como perl, html, php, etc.

  • Existe outro mecanismo que pode ser usado para controlar o realce da sintaxe filetype, chamado ou ftabreviadamente. Semelhante à sintaxe, você dá um tipo como este: :set filetype=html. Outros tipos de arquivos são perl, php, etc.

  • Às vezes, o vim "esquece" qual sintaxe usar, especialmente se você estiver misturando coisas como php e html. Use o atalho de teclado Ctrl+ L( <C-L>) para fazer com que o vim atualize o realce.


Melhor resposta! +!
J. Allan

17

Observe que é :set syntax=xmlrealçado corretamente, mas parece falhar quando se tenta identificar automaticamente o arquivo (ou seja, em execução gg=G).

Quando mudei para :set filetype=xml, o realce funcionou corretamente e o arquivo foi recuado corretamente.


14

Em um arquivo .php (ou um arquivo html), você pode usar um Vim Modeline para forçar certos comandos ou configurações:

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

2
Você quer dizer Modeline
Shammel Lee

Às vezes, as au ...configurações relacionadas à sintaxe em meu ~/.vimrcsão ignoradas para certos arquivos (provavelmente devido a metadados modificados?). Além de copiar o conteúdo do arquivo para um arquivo novo, definir uma linha de modelo na parte superior desse arquivo funciona. Por exemplo, para um script BASH, adicionar uma segunda linha, # vim: syntax=shapós o shebang (primeira linha :), #!/bin/bashparece funcionar, de forma confiável. Como é basicamente um "comentário", apenas incluo ambas as linhas no meu sbbtrecho ("shebang bash").
Victoria Stuart

13

Para torná-lo automático, adicione esta linha ao seu ~/.vimrc:

autocmd BufNewFile,BufRead *.ezt set filetype=html

Se você deseja fazer isso apenas para o arquivo atual, digite:

:set filetype=html

Você também pode substituir em syntaxvez de filetype, mas filetypeafeta mais coisas do quesyntax (incluindo realce de sintaxe, regras de recuo e plug-ins), então geralmente você deve usar, a filetypemenos que queira apenas afetar syntax.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.