# vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 31 2015 23:36:07)
# cat /root/.vimrc
map <F2> :w\|!sh % <cr>
map <F3> :w\|!bash % <cr>
map <F4> :w\|!python % <cr>
map <F5> :w\|!python % &<cr>
highlight RedundantWhitespace ctermbg=DarkBlue guibg=red
match RedundantWhitespace /\s\+$\|\t/
syntax on
highlight Comment ctermfg=green
Estou começando a editar highcharts example htm:
# vi /var/www/js/highcharts/examples/dynamic-master-detail/index.htm
Eu estou navegando através do código e eu estou usando apenas as setas e os Home, Page Up, Page Down, e Endteclas.
Após 2 minutos, essa falha visual ocorre; metade da tela sob o cursor perde o destaque da sintaxe e se torna uma cor. Se eu pressionar Page Downou Page Up, o realce da sintaxe será restaurado.
Qualquer código html com javascript dentro é afetado.
minlines
configuração do realce de sintaxe atual ajuda? Ou seja,:syn sync minlines=800
(ajuste conforme necessário).Respostas:
Isso pode ser um problema no sistema do vim para reconhecer e destacar as "palavras-chave" sintáticas, não tendo contexto suficiente para reconhecer as palavras-chave.
Os conceitos básicos do sistema de sintaxe do vim (localizando e identificando elementos básicos de sintaxe) são explicados em
:h usr_44
Basicamente, o vim usa o regex para reconhecer elementos sintáticos em um arquivo, uma vez identificados, e as regras de destaque são aplicadas para colorir essas construções de código (ou seja, para fazer o "realce da sintaxe"), mas, conforme explicado no
:h 44.10
vim, não começa a analisar a partir do arquivo. No início do arquivo, ele inicia um número de linhas (por exemplo, 10 ou 100 linhas) para cima a partir do topo da sua janela atual.Se uma construção sintática, por exemplo, uma tag HTML de abertura ou uma definição de função, etc, for iniciada mais alto do que o ponto em que o vim começa a analisar, a sintaxe do vims será interrompida.
Normalmente, para corrigir isso, você aumenta o ponto em que o vim começa a analisar.
Para descobrir quantas linhas acima da linha superior do viewport vim estão iniciando seu uso de análise:
Aqui está minha saída ao visualizar um arquivo HTML:
se eu tivesse um problema com a sincronização - apenas para esse arquivo - aumentaria as minlines com
Se você repetidamente resolver esse problema, será um pouco mais difícil. Isso ocorre porque o valor da sincronização geralmente é definido em um arquivo de sintaxe dedicado ao tipo de arquivo que você está editando, por exemplo, para mim, os
syntax sync minlines
tipos de arquivo html são definidos no arquivo de sintaxe.análise de sintaxe e valores de configuração para arquivos css
shell está dentro
sh.vim
e assim por diante.Esses scripts de sintaxe só correr no momento em que você abre um arquivo do tipo
foo.css
,bar.html
,baz.sh
etc, assim, definir uma linha em seu vimrc não vai funcionar porque esses scripts iria explodir suas configurações de distância, uma solução é usar um autocmd que desencadeia quando você insira o arquivofonte
Eu os recebo com
CMakeList.txt
arquivos. Faz parte do mecanismo de destaque da sintaxe. Eu também o recebo em HTML "longo" (algumas páginas, na verdade), onde tenhoJavaScript
código. Para estes, eu uso o seguinte comando:E, na maioria dos casos, resolve o problema.
Observe que o comando tornará o vim muito lento se você editar um arquivo muito grande. Na maioria dos casos, para mim a "lentidão" é mais do que suportável.
fonte