[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