Come forzare vim a evidenziare la sintassi di un file come html?


120

Come imposto l'evidenziazione della sintassi di vim per trattare un'estensione di file come un file html?

Sto usando il modello ez, quindi l'estensione del file è .ezt. Ma in gran parte è normale codice html.

Risposte:


109

Puoi anche inserirlo nel tuo .vimrc:

au BufReadPost *.ezt set syntax=html

E216: Nessun gruppo o evento di questo tipo: BufLoad * .ezt set syntax = html ... cosa sto facendo di sbagliato?
Karthick

2
Nella mia esperienza questo approccio fallirà se fornisci un nome file esatto, ad es .myspecialdotfile. Ha bisogno di una stella da qualche parte su cui lavorare, anche se teoricamente non è necessario.
rado

Ho questo nel mio .vimrcfile per Dockerfile che hanno estensioni per scopi diversi. autocmd BufNewFile, BufRead Dockerfile * set filetype = docker Il solo utilizzo Dockerfile*impedisce il funzionamento dell'evidenziazione della sintassi durante l'utilizzo vi Dockerfile- l'aggiunta della barra rovesciata consente di funzionare per Dockerfile/ Dockerfile.somethingeDockerfilesomething
Controllo Android

204
:set syntax=html

10
@pbr: che risponde esattamente al titolo della domanda.
Skippy le Grand Gourou,

2
> "considera un'estensione di file come un file html"
0atman

questo è quello che stavo cercando :)
niken

Potrebbe essere utile sapere che l'esecuzione :set syntaxrestituirà l'evidenziazione del file attualmente applicata
Ari

26

Dai un'occhiata a questo argomento della wiki di Vim . Alcuni consigli utili:

  • Come accennato in altre risposte, è possibile utilizzare il comando vim set per impostare la sintassi. :set syntax=<type>dove <type>è qualcosa di simile perl, html, php, etc.

  • C'è un altro meccanismo che può essere utilizzato per controllare l'evidenziazione della sintassi chiamato filetype, o ftin breve. Simile a sintassi, si dà un tipo come questo: :set filetype=html. Altri tipi di file sono perl, php, etc.

  • A volte vim "dimentica" quale sintassi usare, specialmente se stai mescolando cose come php e html insieme. Usa la scorciatoia da tastiera Ctrl+ L( <C-L>) per fare in modo che vim aggiorni l'evidenziazione.


Migliore risposta! +!
J. Allan

17

Nota che :set syntax=xmlevidenzia correttamente ma sembra non riuscire quando si tenta di autoindentare il file (cioè in esecuzione gg=G).

Quando sono passato a :set filetype=xml, l'evidenziazione ha funzionato correttamente e il file è rientrato correttamente.


14

In un file .php (o un file html), puoi usare un Vim Modeline per forzare determinati comandi o impostazioni:

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

2
Intendi Modeline
Shammel Lee

A volte le au ...impostazioni relative alla sintassi nel mio ~/.vimrcvengono ignorate per determinati file (presumibilmente a causa di metadati modificati?). Oltre a copiare il contenuto di quel file in un nuovo file, l'impostazione di una modeline all'inizio di quel file funziona. Ad esempio, per uno script BASH, l'aggiunta di una seconda riga, # vim: syntax=shdopo lo shebang (prima riga :) #!/bin/bashsembra funzionare, in modo affidabile. Poiché è fondamentalmente un "commento", includo semplicemente entrambe le righe nel mio sbbframmento ("shebang bash").
Victoria Stuart

13

Per renderlo automatico, aggiungi questa riga a ~/.vimrc:

autocmd BufNewFile,BufRead *.ezt set filetype=html

Se vuoi farlo solo per il file corrente, digita:

:set filetype=html

Puoi anche sostituire syntaxinvece di filetype, ma filetypeinfluisce su più cose disyntax (inclusa l'evidenziazione della sintassi, le regole di rientro e i plugin), quindi in genere dovresti usare a filetypemeno che tu non voglia solo influenzare syntax.

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.