Persistente: imposta la sintassi per un dato tipo di file?


103

Sto lavorando a un progetto Symfony2 che usa Twig, e i tipi di file sono myfile.html.twig. Vim non rileva automaticamente l'evidenziazione della sintassi e quindi non ne applica nessuna. Posso usare :set syntax=HTMLdopo aver aperto il file, ma questo è un problema quando salti tra i file.

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

Risposte:


114

Puoi usare autocmdper farlo, ad esempio:

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

Dovrebbe funzionare.


4
Anche un amico me l'ha fatto notare. Imposta il tipo di file: au BufRead,BufNewFile *.html.twig set filetype=twigImposta la sintassi:au BufRead,BufNewFile *.html.twig set syntax=HTML
Bendihossan

27
Suggerirei di mettere questa riga in un ~/.vim/ftdetect/html.twig.vimfile (dovresti crearla), che è il posto giusto per tali comandi automatici.
xaizek

@xaizek capisco che questo è consigliato, ma hai idea del motivo per cui non funziona per me se lo metto al ~/.vimrcposto di ~/.vim/ftdetect/?
Haralan Dobrev

2
@HaralanDobrev, probabilmente viene sovrascritto da un altro autocomando definito dopo questa riga. Esegui :autocmd BufNewFile,BufRead *.html.twigin Vim per vedere tutti gli autocomandi registrati (prova anche con eventi separati, solo BufNewFilee solo BufRead). Controlla anche l'output di :verbose set syntax?.
xaizek

1
Quanto è stato facile trovare questa soluzione mi fa desiderare che il wiki di vim non esistesse
Jared Beach

59

Aggiungi uno dei seguenti passaggi al tuo .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

o

" 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
Questa è una risposta generica migliore di quella accettata. Se vim non è in grado di rilevare il tipo di file (e fornisce automaticamente l'evidenziazione della sintassi), è meglio impostare il tipo di file piuttosto che solo la sintassi del file.
mrfred

1
setfiletypedovrebbe essere set filetypeAlmeno è così che potrei farlo funzionare
dau_sama

1
@dau_sama setfiletype=htmlnon è una sintassi valida; Ho corretto la risposta. Nota che setfiletype htmle set filetype=htmlfare cose diverse, come accennato nella risposta.
bdesham

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

E aggiungi questa riga a ~/.vimrcper rendere le impostazioni persistenti.


2

So che questo non risponde direttamente alla domanda, tuttavia questo risponde all'intento della domanda, ovvero ottenere l'evidenziazione della sintassi lavorando con Twig / Symfony 2

Ti suggerisco di controllare https://github.com/beyondwords/vim-twig (non mio), che fornisce:

  • il file di evidenziazione della sintassi per * .html.twig,
  • rilevamento del tipo di file per lo stesso e
  • plug-in del tipo di file, che consente di modificare varie impostazioni secondo necessità durante la modifica dei file * .html.twig

Spero che aiuti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.