Persistente: definir sintaxe para um determinado tipo de arquivo?


103

Estou trabalhando em um projeto Symfony2 que usa Twig, e os tipos de arquivos são myfile.html.twig. O Vim não detecta automaticamente o realce de sintaxe e, portanto, não aplica nenhum. Posso usar :set syntax=HTMLdepois de abrir o arquivo, mas é uma dor de cabeça ao alternar entre os arquivos.

Existe uma maneira de definir persistentemente o realce de sintaxe para um tipo de arquivo específico no vim?

Respostas:


114

Você pode usar autocmdpara fazer isso, ou seja:

augroup twig_ft
  au!
  autocmd BufNewFile,BufRead *.html.twig   set syntax=html
augroup END

Deveria trabalhar.


4
Um amigo também apontou isso para mim. Definir o tipo de arquivo: au BufRead,BufNewFile *.html.twig set filetype=twigDefinir a sintaxe:au BufRead,BufNewFile *.html.twig set syntax=HTML
Bendihossan

27
Eu sugeriria colocar esta linha em ~/.vim/ftdetect/html.twig.vimarquivo (você deve criá-la), que é o lugar certo para tais comandos automáticos.
xaizek

@xaizek Eu entendo que isso seja recomendado, mas você tem alguma idéia de por que não funciona para mim se eu colocar em ~/.vimrcvez de ~/.vim/ftdetect/?
Haralan Dobrev

2
@HaralanDobrev, ele provavelmente será sobrescrito por outro comando automático definido após esta linha. Execute :autocmd BufNewFile,BufRead *.html.twigdentro do Vim para ver todos os comandos automáticos registrados (tente também com eventos separados, apenas BufNewFilee apenas BufRead). Verifique também a saída de :verbose set syntax?.
xaizek de

1
Como foi fácil encontrar essa solução me fez desejar que o vim wiki não existisse
Praia de Jared,

59

Adicione uma das seguintes passagens ao seu .vimrc:

" Set the filetype based on the file's extension, overriding any
" 'filetype' that has already been set
au BufRead,BufNewFile *.html.twig set filetype=html

ou

" Set the filetype based on the file's extension, but only if
" 'filetype' has not already been set
au BufRead,BufNewFile *.html.twig setfiletype html

6
Esta é uma resposta genérica melhor do que a aceita. Se o vim não puder detectar o tipo de arquivo (e fornecer automaticamente o realce da sintaxe), é melhor definir o tipo de arquivo em vez de apenas a sintaxe do arquivo.
mrfred

1
setfiletypedeveria ser set filetypePelo menos é assim que eu poderia fazer funcionar
dau_sama

1
@dau_sama setfiletype=htmlnão é uma sintaxe válida; Eu consertei a resposta. Observe isso setfiletype htmle set filetype=htmlfaça coisas diferentes, conforme mencionado na resposta.
bdesham

10
au BufNewFile,BufRead,BufReadPost *.twig set syntax=HTML

E adicione esta linha ~/.vimrcpara tornar as configurações persistentes.


2

Eu sei que isso não responde diretamente à pergunta, no entanto, isso responde à intenção da pergunta, que é obter destaque de sintaxe trabalhando com Twig / Symfony 2

Eu sugiro que você confira https://github.com/beyondwords/vim-twig (não meu), que fornece:

  • o arquivo de realce de sintaxe para * .html.twig,
  • detecção de tipo de arquivo para o mesmo, e
  • plugin de tipo de arquivo, permitindo que você modifique várias configurações conforme necessário ao editar arquivos * .html.twig

Eu espero que isso ajude

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.