2012-07-26 7 views
48

Sto lavorando a un progetto Symfony2 che utilizza Twig ei tipi di file sono myfile.html.twig. Vim non rileva automaticamente l'evidenziazione della sintassi e quindi non ne applica. Posso usare :set syntax=HTML dopo aver aperto il file, ma questo è un problema quando salti tra i file.vim: persistente: imposta la sintassi per un determinato tipo di file?

C'è un modo per impostare in modo persistente l'evidenziazione della sintassi per un tipo di file specifico in vim?

risposta

71

È possibile utilizzare autocmd per realizzare questo, cioè .:

autocmd BufNewFile,BufRead *.html.twig set syntax=html 

dovrebbe funzionare.

+2

Un amico me lo ha appena fatto notare. Impostare il tipo di file: 'au BufRead, BufNewFile * .html.twig set filetype = twig' Impostare la sintassi:' au BufRead, BufNewFile * .html.twig impostato sintassi = html' – Bendihossan

+14

Vorrei suggerire di mettere questa riga '~/.vim/ftdetect/html.twig.vim' file (dovresti crearlo), che è il posto giusto per tali autocomandi. – xaizek

+0

@xaizek Capisco che questo sia raccomandato, ma hai qualche idea del perché non funzioni per me se inserisco '~/.vimrc' invece di' ~/.vim/ftdetect/'? –

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

E aggiungere questa riga a ~/.vimrc per rendere persistenti le impostazioni.

1

So che questo non risponde direttamente alla domanda, ma questo risponde l'intento della questione, che è quello di ottenere l'evidenziazione della sintassi lavorare con Twig/Symfony 2

io suggerisco di controllare https://github.com/beyondwords/vim-twig (non mia) , che prevede quanto segue:

  • la sintassi del file che evidenzia per * .html.twig,
  • tipo di file di rilevamento per lo stesso, e
  • tipo di file plug-in, che consente di modificare varie impostazioni come necessario quando modifica i file * .html.twig

Spero che questo aiuta

16

aggiungere una delle seguenti righe al .vimrc

" Set the type for the file type and override if file type 
" already has detected 
au BufRead,BufNewFile *.html.twig set filetype=html 

O

" Set the type for the file type but do NOT override if file type 
" already has detected 
au BufRead,BufNewFile *.html.twig setfiletype=html 
+1

Questa è una risposta generica migliore di quella accettata.Se vim non è in grado di rilevare il tipo di file (e fornisce automaticamente evidenziazione della sintassi), è meglio impostare il tipo di file anziché la sintassi del file. – mrfred

+1

'setfiletype' dovrebbe essere' set filetype' Almeno è così che posso farlo funzionare –

0

E 'il caso più semplice. Di solito possono essere funzioni sofisticate per determinare la sintassi. Purtroppo potrebbero funzionare in modo errato. Se si ha un caso semplice quando l'algoritmo sbaglia, è necessario escludere l'estensione da uno e scrivere separatamente per questo caso. Per esempio ottengo sempre la sintassi vmasm per i file mac. Quindi in effetti è puro file macro GNU Assembler. E quindi ho bisogno di cambiare la sintassi manualmente tramite comando: imposta syntax = asm ogni volta dopo aver aperto questo file per la modifica. Ma dopo aver eseguito la procedura sopra la definizione della sintassi è corretta.