Vim for Programmers - Terza Parte
Da MelugWiki.
by emitrax_at_gmail_dot_com
Indice |
Introduzione
Questa è la terza ed ultima parte del mio piccolo tutorial riguardo a VIM e alla sue potenzialità per programmatori. In quest'ultima parte vedremo com'è possibile compilare da VIM, navigare tra gli errori, ma soprattutto vi introdurro due carissimi amici di VIM che fanno proprio al caso di un programmatore: cscope e ctags.
Make: compiliamo da VIM
Le operazioni che esegue piu spesso un programmatore sono la compilazione, l'editing e il testing dell'applicazione. Quindi se si potesse compilare senza uscire dall'editor sarebbe un vantaggio. VIM ci permette di farlo, utilizzando make, senza uscire dal file.
:make
Comodo direi. E' ovviamente necessario che sia presente un Makefile nella directory corrente! Ancora piu comodo è la gestione degli errori. Se infatti il vostro codice non compila, VIM vi porta direttamente alla prima riga con l'errore elencata da gcc. Usando poi il comando
:clist
Potrete vedere la lista di tutti gli errori e le relative righe riportate da gcc. Per navigare tra i vari errori potrete usare il comando
:cn
per andare all'errore successivo. Non credo abbiano bisogno spiegazioni i comandi
:cfirst :clast
che portano al primo e all'ultimo errore rispettivamente.
Completazione Automatica
Pensavate che solo gli enormi IDE tipo kdevelop avessero a disposizione una caratteristica del genere?!? Mi dispiace, ma vi devo deludere! Provate a scrivere le prime lettere di una qualsiasi struttura, variabile, funzione o quello che volete, e poi dalla MODALITA INSERIMENTO usate il comando
ctrl+n
Sorpresi?! ATTENZIONE: NON DOVETE PASSARE IN MODALITA COMANDI per usare il precedente comando. Funziona solo in modalita inserimento. Mentre scrivete premete ctrl+n e basta! Per iterare tra le varie opzioni che fornisce l'autocompletamento continuate ad usare ctrl+n
ctrl+p
Serve per tornare all'opzione precedente. N sta per next e P per previous! Facile da ricordare. L'opzione dell'autocompletamento funziona meglio con il file tags settato (vedi sezione CTAGS e VIM )
Identazione automatica
Un altra caratteristica di VIM , che molto aiuta, è l'autoidentazione o l'indentazione di un intero file. Voi infatti potete, abilitare l'identazione automatica con il comando
:set autoindent
Oppure scrivere tutto il vostro codice automaticamente per poi identarlo TUTTO in una volta con il comando
gg=G
Avete ragione, questo comando differisce un po dalla sintassi dei precedenti, ed onestamente non so il perche! Un altro modo comunque per identare un testo che avete selezionato è il comando uguale. Selezionato il testo dalla modalita visuale ed usate il comando
=
VIM in un nanosecondo vi identera il testo selezionato.
Infine quante volte avete scritto un commento che sfora dalla riga e non sapete come identarlo?! Con VIM basta usare il comando
gq
per identare automaticamente i commenti dopo averli inseriti.
CTAGS e VIM
Ctags praticamente è un plugin di VIM che facilita ancora di piu la navigazione tra i sorgenti. E' piuttosto semplice da usare. Dalla directory root dei vostri sorgenti, ad esempio i sorgenti di linux, eseguite
cd /usr/src/linux exuberant-ctags -R .
A questo punto verra creato un file tags nella directory corrente con tutte le informazioni necessarie a VIM per portarvi da una parte all'altra. Adesso aprite un qualsiasi file dalla directory corrente. Questo vuol dire che se avete un file adesso in una sottodirectory, dovete aprirlo specificando l'intero path relativo, invece che spostarvi in quella directory e poi aprirlo. Questo perche VIM deve avere come directory corrente quella in cui risiede il file tags generato da exuberant-ctags. In realtà comunque è anche possibili spostarsi in quella directory e continuare ad usare ctags, ma in questo caso bisogno settare VIM affinche vada ad usare il tags in quella directory invece di cercarne uno nella directory corrente. Il comando da usare da VIM per settera il file di tags è
:set tags=../../tags
Con tags ipotizzando che sia due directory sopra. Ok adesso navighiamo tra il codice. Se per esempio incontrate una chiamata a funzione, diciamo la pritnk, link titleposizionate il cursore su di essa e premete
ctrl+]
VIM vi portera immediatamente alla sua definizione!!! E' facile intuira la potenza di questo strumento. Per tornare indietro basta premere
ctrl+t
Per maggiori info vi rimando comunque all'homepage di ctags
Cscope e VIM
Un altro tool davvero molto carino ed utile per navigare tra i sorgenti in coppia con VIM è proprio cscope. Anch'esso è molto semplice da usare. Dalla directory radice dei sorgenti
cscope -R
verra creato un file cscope.out con tutte le informazioni necessarie. Fate attenzione che il comando precedente potrebbe richiedere alcuni secondi per essere completato se eseguito ad esempio nella directory radice che contiene i sorgenti del kernel di linux. Adesso avviate cscope dalla stessa directory che contiene cscope.out
cscope
Un piccolo menu vi verra presentato in basso. Per scorrere tra le voci usate i tasti direzioneli, mentre per passare tra il menu e i risultati delle ricerche usate il tasto TAB. Esempio, se volete cercare una chiamata a funzione printk del kernel andate alla voce
Find this C symbol:
inserite printk e premete invio. Nella parte alta vi verranno visualizzate i risultati della ricerca. Posizionatevi sul risultato che vi interessa, premete invio e VIM verra avviato a quella riga che contiene quella chiamata. Una volta usciti tornerete al menu di cscope. Per uscire da cscope usate ctrl+d. Anche in questo caso, vi rimando all'homepage di cscope per maggiori informazioni.
Help di VIM
Ci sono tantissime cose che non vi ho detto di VIM, sia perche non le so, sia perche non ho tempo per studiarmele. Esiste comunuque tantissima documentazione alla quale potete accedere tramite il comando
:help
Se ad esempio volete piu info sul come marcare una pagina usate
:help '
Oppure, ancora piu importante, non vi ho detto che come qualsiasi altro programma, VIM ha un file di configurazione che si chiama vimrc. Per saperne di piu
:help vimrc
Buona lettura!! ;-)
Conclusione
Mi auguro di essere riuscito a convincervi che con VIM, si puo comunque programmare tranquillamente, facendo a meno di quei pesantissimi IDE, che intasano la memoria ;-)