Skip to navigation
Logo Penaz's Area

cat /dev/random > penaz

Le basi di VI (Improved) - Parte Terza


Vediamo quali funzioni VI riserva per i programmatori e impariamo a sfruttarle.

Buongiorno, oggi impareremo come usare altre funzioni di VI, particolarmente utili per i programmatori.

Se siete dei programmatori avrete sicuramente avuto a che fare con uno di questi messaggi:

File "progetto.py", line 526

prin "prova"

^

SyntaxError, invalid syntax

è sicuramente scomodo contare fino alla cinquecentoventiseiesima riga, allora possiamo inserire nell'interfaccia la numerazione delle righe; in command mode scriviamo:

:set number

E magicamente compariranno i numeri di riga. Se trovate scomodo anche semplicemente scorrere fino alla riga 526 possiamo arrivarci in un baleno in questo modo:

[5][2][6][g][g]

è sufficiente quindi digitare il numero della riga e premere 2 volte "g" per passare subito a correggere l'errore.

Quando le righe sono tante è estremamente semplice confondersi e modificare un'altra riga, per annullare il cambiamento basta una semplice mossa: in command mode premiamo

[u]

"u" sta per "undo" (annulla), quindi conoscendo un minimo di inglese molti pulsanti sono semplici da ricordare. Per evitare di confondere riga nuovamente possiamo inserire questo comando:

:set cursorline

E VIM avrà la premura di evidenziare la riga selezionata in modo abbastanza evidente.

Nel corso del vostro progetto potrebbe essere utile eseguire dei comandi bash (per esempio per vedere il nome di un file da linkare); invece di chiudere VI, eseguire il comando per poi riaprire il vostro editor potete:

:!

Un esempio potrebbe essere:

:!ls -lha

Per un attimo VIM sparirà per far posto all'output di "ls", premendo [invio] tornerete in VIM. Nel caso invece voleste che l'output del comando venga inserito nel vostro testo basta:

:r!

Per esempio:

:r!ls -lha

"r" sta per "read"...Semplice, no?

Un'altra funzione che non tutti gli editor possiedono è il cosiddetto "folding" del codice, cioè la possibilità di ridurre numerose righe di codice in una sola riga rappresentativa, in modo da risparmiare spazio e avere maggior ordine senza che il progetto venga effettivamente modificato. Ecco un esempio pratico, per rendere più chiara la situazione:

def Funzione:
    print "Questa è una funzione lunga"
    print 1+1
    print "Questa è un'altra riga di codice"
    print "Ancora una riga"
    print "Così dovrebbe bastare

def AltraFunzione:
    print "Questa è un'altra funzione"

Entriamo in visual mode:

[v]

Ed evidenziamo la funzione da ridurre, con le frecce direzionali o i tasti [h][j][k][l]. In questo caso selezioniamo tutto il metodo "Funzione", intestazione inclusa; Poi operiamo il folding con:

[z][f]

E otterremo:

+--   6 lines: def Funzione:----------------------------------------

def AltraFunzione:
    print "Questa è un'altra funzione"

Per riaprire il fold basta andare sulla riga da riaprire e premere

[z][o]

Per richiuderlo basta essere su una qualsiasi riga che appartiene al fold e premere:

[z][c]

Come ho già detto il folding è una funzione che agisce sull'interfaccia: anche se nell'esempio precedente si vedono solo 3 righe, le righe effettivamente scritte restano otto.

E con questo abbiamo finito anche oggi. Saluti e al prossimo post!

Penaz