[Tech] vim: scansione file per syntax highlighting

Francesco Poli frx@firenze.linux.it
Dom 21 Apr 2002 16:21:53 CEST


Salve a tutti!  :)
In facolta`, dopo avere installato una RedHat 7.2 su una macchina nuova
e avere cominciato a usare la macchina, ho notato che vim era lentissimo
nell'aprire codici sorgenti lunghi e nell'esecuzione di sostituzioni su
tutto il file (cose tipo :1,$ s/pippo/foo/g).
Spulciando l'help e facendo qualche verifica, ho scoperto che
`l'appesantimento' e` dovuto alla scansione del file che vim effettua,
quando ne visualizza un frammento, allo scopo di garantire una syntax
highlighting ragionevolmente corretta.
Questa scansione infatti e` fatta a partire da almeno minlines righe
prima della 1a riga da visualizzare.
Ora il default nella versione installata con la RH 7.2 e`
minlines=2147483648 (o comunque un valore decisamente grande).
Risultato pratico: *tutto* il file viene scandito quando vim deve
visualizzarne le ultime righe. Dato che vim si ricorda (tramite il file
~/.viminfo) quale era riga corrente l'ultima volta che il file e` stato
visualizzato e ritorna li`, questo dovrebbe spiegare entrambe le
lentezze.

In effetti, con il comando ex

:syntax sync minlines=50

limito il numero di righe a 50 e ottengo le prestazioni velocistiche che
desidero...

Ora pero`, se il comando lo impartisco quando il file e` gia` aperto, ho
gia` dovuto attendere la prima lenta visualizzazione e poi... che
barba ridigitare ogni volta il comando!
Non va bene.

Allora ho provato ad aggiungere la riga

syntax sync minlines=50

nel mio ~/.vimrc
Risultato: niente! :-(
Ho provato a metterla come ultimo comando nel ~/.vimrc o in altre
posizioni: niente!  :-(((

Allora ho creato l'alias

alias vim='vim -c "syntax sync minlines=50"'

Cosi` la visualizzazione e la sostituzione sono praticamente istantanee
(OK!), ma vim non ritorna piu` alla riga alla quale era stato `lasciato'
precedentemente il file...

*Domanda*: Qualcuno sa perche'?
*Domanda*: Qualcuno conosce una soluzione migliore?

La soluzione con l'alias non mi entusiasma (non mi pare il massimo
dell'eleganza): preferirei passare per il ~/.vimrc
Mi sono letto la sequenza di inizializzazione di vim sul suo help: mi
pare che le uniche operazioni importanti tra l'esecuzione del ~/.vimrc e
l'esecuzione dei comandi ex passati con l'opzione -c siano
--> il caricamento dello script di riconoscimento del tipo di file
($VIMRUNTIME/filetype.vim)
--> la lettura del file ~/.viminfo
Tuttavia non sono riuscito a capire perche' dovrebbero imporre un certo
valore a minlines...

Se qualcuno mi illumina, gliene saro` grato!  ;)
Ciao!
-- 
      Francesco Poli   <frx@firenze.linux.it>
===================================================
 "May the Source be with you!"  -- Eric S. Raymond




Maggiori informazioni sulla lista flug-tech