Perché vim lampeggia in modo casuale quando sto navigando nel codice?


8
# 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

Sto iniziando a modificare highcharts esempio htm:

# vi /var/www/js/highcharts/examples/dynamic-master-detail/index.htm

animazione del problema

Sto navigando tramite il codice e sto usando solo i tasti freccia e il Home, Page Up, Page Down, e Endle chiavi.

Dopo 2 minuti si verifica questo glitch visivo; metà dello schermo sotto il cursore perde l'evidenziazione della sintassi e diventa di un colore. Se premo Page Downo Page Up, l'evidenziazione della sintassi viene ripristinata.

Qualsiasi codice HTML con javascript all'interno è interessato.


Questo succede con altri terminali che hai provato o solo uno?
fruglemonkey,

Nel film, è xterm nudo. Questo accade anche sullo schermo di xterm. Cos'altro? Konsole? No, non l'ho ancora provato.
austronaut2123,

Succede anche in Konsole, allora? Dovresti testare
fruglemonkey il

Sì. Fa ...
austronaut2123

Aumentare l' minlinesimpostazione per l'evidenziazione della sintassi attuale aiuta? Vale a dire, :syn sync minlines=800(regolare secondo necessità).
Zilk,

Risposte:


1

Questo potrebbe essere un problema con il sistema di vim per riconoscere e quindi evidenziare "parole chiave" sintattiche che non ottengono un contesto sufficiente per riconoscere le parole chiave.

I concetti di base del sistema di sintassi di Vim (trovare e etichettare gli elementi di sintassi di base) sono spiegati in :h usr_44

Fondamentalmente vim usa regex per riconoscere gli elementi sintattici in un file, una volta identificati, quindi vengono applicate le regole di evidenziazione per colorare quei costrutti di codice, (cioè per fare "evidenziazione della sintassi"), ma come spiegato in :h 44.10vim non inizia ad analizzare dal all'inizio del file, inizia un numero di righe (ad es. 10 o 100 righe) verso l'alto dalla parte superiore della finestra corrente.
Se un costrutto sintattico, ad esempio un tag HTML di apertura o una definizione di funzione ecc. Inizia più in alto rispetto al punto in cui vim inizia l'analisi, la sintassi di vims regex si interrompe.

Di solito per risolvere questo problema, aumenta il punto in cui vim inizia ad analizzare.
Per scoprire quante righe sopra la riga superiore del viewim vim sta iniziando il suo analisi, usare:

:syntax sync

Ecco il mio output durante la visualizzazione di un file HTML:

:syntax sync
--- Syntax sync items ---
syncing on items; minimal 10, maximal 100 lines before top line
[lots of other output here...]

se avessi un problema con la sincronizzazione - solo per quel file - aumenterei le minline con

:syntax sync minlines=200

Se riscontri ripetutamente questo problema, è più difficile. Questo perché il valore di sincronizzazione è spesso impostato in un file di sintassi dedicato al tipo di file che si sta modificando, ad es. Per me syntax sync minlinesper i tipi di file html è impostato nel file di sintassi

/usr/share/vim/vim74/syntax/html.vim

l'analisi della sintassi e i valori di configurazione per i file CSS sono presenti

/usr/share/vim/vim74/syntax/css.vim 

shell è dentro sh.vime così via.
Questi script sintassi eseguiti solo al momento si apre un file del tipo foo.css, bar.html, baz.shecc, in modo da impostare una linea nel vostro vimrc non funzionerà perché questi script potrebbero soffiare le impostazioni di distanza, una soluzione è quella di utilizzare un autocmd che si innesca quando inserisci il file

autocmd BufEnter *.html :syntax sync minlines=200

0

Ottengo questi con i CMakeList.txtfile. Fa parte del meccanismo di evidenziazione della sintassi. Lo ottengo anche in HTML "lungo" (alcune pagine davvero) dove ho il JavaScriptcodice. Per questi, utilizzo il seguente comando:

:syn sync fromstart

E nella maggior parte dei casi risolve il problema.

Nota che il comando renderà Vim molto lento se modifichi un file molto grande. Nella maggior parte dei casi, per me la "lentezza" è più che sopportabile.

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.