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.

Karthick
fonte

Respostas:

109

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

au BufReadPost *.ezt set syntax=html
Benoit
fonte
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
Âmbar
fonte
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.

slm
fonte
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.

Daniel
fonte
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()
 ~
 ~
Ярослав Рахматуллин
fonte
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.

wisbucky
fonte