Vim IDE per Php
Ricerca all’interno del codice con Cscope
Spesso capita di aver la necessità, specialmente nei progetti che hanno molti file, di fare delle ricerche all’interno del codice.
Qui ci viene in aiuto cscope.
Esiste un bellissimo tutorial in inglese su come installare ed usare cscope con Vim.
I passi fondamentali da seguire per poter subito usufruire di cscope sono:
installare cscope e con fedora basta:
$ su -c "yum install cscope"
poi scaricare all’interno della cartella .vim/plugin
il plugin per Vim cscope_maps.vim, lo si dovrebbe fare agilmente con questo comando da bash:
$ wget -P ~/.vim/plugin http://cscope.sourceforge.net/cscope_maps.vim
Come usarlo?
Cscope viene normalmente usato per il codice scritto in C. Può però essere usato per il Php. Per farlo basta entrare nella directory del progetto in Php e creare un file che indichi a cscope quali file visionare per il suo lavoro (i file php), dopo di che lanciare cscope in modo che ricostruisca il suo database, i passaggi dunque sono:
$ find . -name '*.php' > ./cscope.files
$ cscope -b
$ rm cscope.files
Fatto questo possiamo passare all’uso di cscope. E’ molto semplice.
Si può fare o utilizzando direttamente cscope, si entra nell’interfaccia di quest’ultimo e si fa una ricerca di una funzione, con le frecce ci si muove e con “invio” si può aprire in automatico Vi che ci farà vedere il codice sorgente. Con Ctrl + d
si esce da cscope (ovviamente se si è dentro a Vi bisogna prima uscire da quest’ultimo). Per poter usare Vim bisogna impostare la variabile EDITOR in bash:
$ export EDITOR=vim
per non doverla impostare ogni volta si può inserire questa riga all’interno del proprio bashrc o bash_profile.
Il secondo sistema è utilizzare il plugin di Vim già installato.
Basta lanciare Vim e usare cscope con il comando di Vim :cscope
, si può vedere la guida con :help cscope
.
Per la navigazione, aprire un file php con Vim e spostarsi su una funzione che viene ripetuta più volte. Digitare in modalità comandi Ctrl + \
( \ è il backslash) e poi subito s
. Verrà presentata la lista delle righe in cui compare la funzione, inserire il numero che si vuole andare a vedere e premere invio. Per tornare indietro premere Ctrl + t
.
Se invece di Ctrl + \
si fa Ctrl + barra_spaziatrice
e poi subito s
e si seleziona poi la riga di interesse, Vim aprirà una nuova finestra che visualizzerà la scelta richiesta.
Questo per un uso basilare, per un uso più approfondito rimando al tutorial che ho citato prima e reperibile qui.
ATTENZIONE — Risoluzione di problemi
Quando lancio Vim mi viene fuori un messaggio di errore del tipo e568, ho risolto velocemente il “bug” modificando la riga 42 del plugin sostituendola con quanto segue:
if has("cscope")
if exists("./cscope.out")
cs add ./cscope.out
endif
Navigazione all’interno del codice con ctags
Cscope è davvero utile per ritrovare facilmente pezzi di codice all’interno del proprio progetto. Ctags (anche noto come Exuberant Ctags) è un altro strumento molto utile per poter saltare e navigare all’interno del proprio codice.
Per prima cosa è necessario avere installato il programma ctags, se non è installato basta:
$ su -c "yum install ctags"
Ora bisogna creare la lista dei tag del proprio progetto Php con ctags, da bash dopo essere entrati nella directory di lavoro:
$ ctags -R
(Questo crea un file tags che contiene tutti i tag necessari alla navigazione).
Ora con Vim basta aprire un file php, posizionarsi sopra una funzione del proprio progetto e con la combinazione dei tasti Ctrl + ]
si verrà catapultati alla definizione della funzione. Per tornare indietro basta la combinazione dei tasti Ctrl + t
.
Invece di usare la combinazione dei tasti si può, in modalità comandi di Vim, digitare :ta nome_funzione
e si verrà rimandati alla dichiarazione della funzione ricercata.
Esistono anche altre funzioni di Vim per la navigazione nei tag, con :ts
si può vedere la lista delle funzioni ricercate. Per altre informazioni rimando alla documentazione di Vim reperibile dall’editor con :help tag
.
Source Code Browser con Taglist Plugin
Vim può diventare un ottimo browser del codice sorgente con il plugin Taglist (pagina nel repository di vim). Ricordo che per usare questo plugin è necessario avere installato ctags, come ho spiegato precedentemente.
Per installare questo plugin basta scaricarlo e scompattarlo all’interno della solita directory per vim (.vim
) dell’utente. Dopo aver fatto questa operazione bisogna ricostruire l’indice della documentazione aprendo Vim e dando :helptags ~/.vim/doc
, così si può vedere la documentazione completa di questo plugin con :help taglist.txt
.
Non spiego approfonditamente l’uso di questo plugin, per un uso più approfondito rimando alla documentazione ufficiale online o da vim con :help taglist-using
.
Per aprire la finestra con la lista dei tag basta digitare in modalità comandi di Vim :TlistOpen
. Per chiudere la finestra basta usare il solito comando di Vim :q
.
Per saltare da una voce della lista al codice si può usare o il mouse (se si è impostato Vim per usare il mouse come ho specificato all’inizio di questo articolo) o ci si posiziona col cursore sulla voce della lista e si da Invio
.
Se invece di Invio
si preme la barra spaziatrice si può vedere in basso (dove si entra nella modalità di inserimento comandi di Vim) la dichiarazione della riga in cui si trova il tag.
4 Commenti
Aggiungi un commento Annulla risposta
Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.
ciao Mario,
interessante la tua guida, che mi studierò non appena trovo il tempo (tiranno!).
Visto che sei esperto, ti volevo fare una domanda.
Da anni utilizzo sempre editor ascii che prevedano l’emulazione brief. Brief è un “antico” editor derivante dal mondo mainframe che ha la possibilità di settare la tastiera opportunamente. Es. il tasto “-” del tastierino numerico, taglia la riga e la mette in buffer. Tasto “ins” inserisce la riga che ha in buffer.
Ma questo certamente si può configurare con qualunque editor programmabile.
Quello che invece non si trova facilmente è la “selezione colonna”, che invece in brief è semplicissima con “alt+c” ed è utilissima, ad esempio, per fare le identazioni.
Hai idea se si possa configurare in vim e come?
Grazie e buon lavoro,
daniele
Scusami, non ho capito cosa intendi con “selezione colonna”.
In Vim un modo veloce fare le indentazioni del testo è usare “>” (indenta a destra) e “<" (indenta a sinistra), anche dopo aver selezionato la porzione di testo di interesse con maiusc + v.
Ciao,
molto interessante il tuo post, ti segnalo una piccola cosa riguardo il plugin per la documentazione: dopo aver installato ManPageView e elinks il comando da usare per cercare doc è :
:Man nome_funzione.php (es :Man phpinfo.php)
Ciao
Non dovrebbe servire aggiungere l’estensione .php alla ricerca. Correntemente uso, senza problemi, il comando in questo modo :Man nome_funzione