A coloração da sintaxe é imprecisa para arquivos HTML com código CSS
Como você pode ver no screencast a seguir, quando eu abro um arquivo HTML com algum CSS nele, há alguma parte do arquivo que não mostra coloração de sintaxe. Você tem experiência nisso? É normal quando se tem vários idiomas em um arquivo como neste caso?
Respostas
Às vezes, o Vim pode perder o controle de onde está destacando, especialmente em cenários complexos (linguagens aninhadas, neste exemplo).
Você pode dizer ao Vim onde ele deve sincronizar o realce de sintaxe usando o :syn synccomando. De :h :syn-sync:
Existem quatro maneiras de sincronizar:
- Sempre analise desde o início do arquivo.
- Com base em comentários de estilo C. O Vim entende como os comentários C funcionam e pode descobrir se a linha atual começa dentro ou fora de um comentário.
- Pule para trás um certo número de linhas e comece a analisar lá.
- Pesquisando para trás no texto por um padrão para sincronizar.
Como não sabemos quanto tempo o <style>bloco terá e não estamos usando comentários no estilo C, isso nos deixa com duas soluções (1 e 4).
A Solução 1 é a mais fácil das duas, exigindo uma única linha em ~/.vim/after/syntax/html.vim:
syntax sync fromstart
Isso dirá ao Vim para sempre sincronizar desde o início do arquivo. Isso pode ser lento para arquivos longos. No entanto, o Vim armazenará em cache o texto analisado anteriormente, de forma que ele só precise analisar o arquivo novamente quando e onde for necessário.