Vim, como recarregar o realce de sintaxe

Respostas:

95

Usar :syntax sync fromstart

Recebi essa dica de http://vim.wikia.com/wiki/Fix_syntax_highlighting

Esse artigo também sugere a criação de um mapeamento para esse comando, por exemplo, para mapear F12:

noremap <F12> <Esc>:syntax sync fromstart<CR>
inoremap <F12> <C-o>:syntax sync fromstart<CR>
Mike Lippert
fonte
Isso funciona, mas remove o sublinhado para verificação ortográfica. Alguma maneira de evitar isso?
Alec Jacobson
1
Desculpe, não sei. Eu não tenho nada para fazer a verificação ortográfica. Pode depender de seu addon específico. Se ninguém mais responder, pode valer a pena fazer uma pergunta com todas as informações relevantes.
Mike Lippert
3
Acabo usando autocmd BufEnter,InsertLeave * :syntax sync fromstartpara forçar uma sincronização de sintaxe depois de entrar em um buffer. A sincronização da sintaxe também é acionada quando há um InsertLeaveevento acontecendo.
Samuel Li
Talvez alguém ache isso útil um dia. Use filetype=shou syntax=shpara bash e goste, não bash. Levei algum tempo para descobrir isso.
quapka
Estou usando o :do Syntaxequivalente do :doautocmd Syntaxque é apenas um pouco mais curto, então você não precisa vinculá-lo (pelo menos não tenho que chamar esse comando com frequência, então eu apenas o digito). Eu o uso principalmente em alguns arquivos que contêm regexes que fazem com que o realce da sintaxe seja interrompido quando eu abro o arquivo via netrw.
Rens Tillmann
53

Tentar:

:e

Se você não tiver alterações não salvas no arquivo.

Ou:

:syn off | syn on
Holygeek
fonte
Crie um mapeamento para aliviar a dor, algo comonmap <F6> :Rmodel|e<CR>
holygeek
2
Parece que deve haver algum comando embutido para atualizar o realce da sintaxe. Outra coisa que parece funcionar é pular para outra parte do arquivo, como o início ou o fim, e voltar, por exemplo:gg``
Keith Pinson
2
": syntax sync fromstart" (sem as aspas) não recarregava o realce de sintaxe de tipo de arquivo em arquivos que às vezes não mostram cores de sintaxe - um problema contínuo para mim e para o Vim, por algum motivo. No entanto, ": syn off | syn on" funcionou imediatamente. ": e!" também fará esse recarregamento, mas cuidado: as alterações não salvas no seu arquivo serão perdidas!
Victoria Stuart
:syn off | syn onmuda o esquema de cores para mim, o que é irritante
naught101
12

Tentei todas as opções acima - nenhuma funcionou para mim.

A única coisa que funciona é: :filetype detect então remapei um atalho rápido :noremap <Leader>,ftd :filetype detect

JESii
fonte
9

Às vezes, a sintaxe está OK, mas tudo o que está sendo quebrado são dobras. Nesse caso, zxajuda muito.

Da documentação do VIM:

zx

Atualizar dobras: Desfaça manualmente as dobras abertas e fechadas: aplique novamente o 'nível da dobra' e faça "zv": Exibir a linha do cursor. Também força dobras de recomputação. Isso é útil ao usar 'foldexpr' e o buffer é alterado de forma que as dobras não são atualizadas adequadamente.

Wormer
fonte
5

Outra opção é:

doautocmd Syntax
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fonte
1
fwiw, esta é a única resposta que corrigiu o realce de sintaxe quando eu tive esse problema ( syntax sync fromstartnão fiz nada, nem fiz mais nada!)
TJ Ellis
1
Uma versão mais curta disso seria:do Syntax
Rens Tillmann
-1

Tentar:

:Rrefresh!

Este comando atualiza certas configurações em cache e também recarrega rails.vim .
Isso me ajuda a atualizar o destaque de sintaxe no Rails.

zenbro
fonte
Isso se aplica apenasrails.vim e não é uma solução geral. Sem esse plugin, este comando não existe.
wchargin
-1

Você também pode tentar:

CTRL-L

Dos documentos VIM ( :h CTRL-L):

Limpe e redesenhe a tela. O redesenho pode acontecer mais tarde, após o processamento do tipo antes.

Jordânia
fonte
Ctrl-L atualiza a tela. Não faz diferença se você fez alterações no arquivo de sintaxe correspondente.
Alexis Wilke