Vim the editor of the beast (cit. packz), for php programmers (part 2)

La seconda parte del viaggio attraverso la customizzazione di Vim editor per scrivere codice php

Se non l'avete ancora letta, vi consiglio di iniziare dalla parte 1.

Dunque, riparto da dove ero rimasto, come promesso vediamo altre funzionalità che possano agevolare la nostra programmazione in php.

Taglist

Vogliamo aggiungere la funzionalità di browsing del codice sorgente?

Per farlo facciamo queste cose qui: (è necessario aver installato ctags, di cui si è parlato nella parte 1.)

  • Scarica il plugin taglist da qui
  • Segui le istruzioni di installazione, comunque essenzialmente si tratta di copiare il file taglist.vim nella directory
    ~/.vim/plugin/
  • Per rendere più veloce l'attivazione/disattivazione del browser possiamo aggiungere queste linee che seguono al file
    ~/.vim/after/plugin/general.vim
    let Tlist_Ctags_Cmd = "/usr/bin/ctags"
    let Tlist_Inc_Winwidth = 1
    let Tlist_Exit_OnlyWindow = 1
    let Tlist_File_Fold_Auto_Close = 1
    let Tlist_Process_File_Always = 1
    let Tlist_Enable_Fold_Column = 0
    let tlist_php_settings = 'php;c:class;d:constant;f:function'
    if exists('loaded_taglist')
    nmap <F8> :TlistToggle<CR>
    endif

    Assicuriamoci che il percorso all'eseguibile ctags sia corretto, e siamo pronti a schiacciare F8 per far comparire/scomparire il borwser del codice.

  • Finito

Folding

Avete visto nell'immagine sopra come i metodi sono tutti quanti ben "raccolti"?

Se piace anche a voi allora non dovete fare altro che aggiungere questa riga qua nel vostro .vimrc

[precode]let php_folding = 1[/precode]

A questo punto potete aprire e chiudere i fold con i seguenti comandi:

  • zo: apre il fold
  • zc: chiude il fold
  • zR: apre tutti i fold
  • zM: chiude tutti i fold
  • zj: muove fino all'inizio del fold successivo
  • zk: muove fino alla fine del fold precedente

Make program

Sviluppando in locale si può utilizzare questa bella funzionalità. In pratica si tratta di far eseguire direttamente il file sul quale si sta lavorando all'interprete php in modo da vedere se ci sono errori di sintassi etc..., ed in tal caso si viene catapultati al punto esatto in cui compare l'errore.

Per abilitare questa cosa qua aggiungete sempre nel vostro .vimrc

set makeprg=php -l %
set errorformat=%m in %f on line %l

Ora è sufficiente lanciare il comando :make dentro Vim per ottenere quanto detto sopra.

Debug

E qui la cosa diventa interessante. Installando Xdebug riusciamo a far lavorare vim come un vero e proprio tool di debug.

Probabilmente riuscite ad installare facilmente xdebug perché lo trovate nei repository ufficiali della vostra distro linux, ad esempio nel pacchetto php-pecl-xdebug, se così non fosse non disperate, leggete qui e vedete di installarlo.

Una volta installato bisogna configurare il php e lo si fa aggiungendo le seguenti linee al vostro php.ini

; XDEBUG
[Zend]
zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = localhost

Chiaramente dovete mettere il percorso al file xdebug.so giusto per voi.

Ora nel phpinfo() dovreste vedere un'intera sezione dedicata a xdebug.

Poi bisogna installare il plugin per vim, ma prima aprite il vostro editor, digitate :version e controllate di avere +signs e +python, altrimenti dovrete ricompilare vim per abilitarli.
Ora prendete il plugin da qui, insieme alle istruzioni per installarlo.

Siete a posto, ora visitate da browser la pagina che volete debuggare, aggiungete all'url ?XDEBUG_SESSION_START=1, tornate in vim, premete F5 ed avete 5 secondi per ricaricare la pagina nel browser con l'aggiunta del parametro get indicato prima.

Tornate in vim e vedrete che la connessione tra client e dubugger è andata a buon fine, potete quindi iniziare la vostra sessione di debug.

Per approfondimenti su come si usano gli strumenti di debug, leggetevi direttamente la documentazione di xdebug.

Per facilitare l'operazione di aggiunta del parametro all'url potete servirvi di un addon per firefox che ho scritto tempo fa, lo trovate qui.

Che altro?

Si potrebbe andare avanti ancora molto, ad esempio si potrebbero usare dei plugin che servono a matchare apertura e chiusura di tag html, un po' come si fa con le parentesi, ma a me non hanno mai funzionato molto bene. Sicuramente conviene utilizzare il mapping di comandi per crearsi degli shortcut appropriati per i framework/librerie utilizzate più fi frequente.

Vediamo solo alcune altre configurazioni da inserire nel file .vimrc che potrebbero rivelarsi utili:

" aggiunta numeri di riga
set number
" stanco di cambiare testo dentro doppie virgolette?
:nmap X ci"
" lavorare direttamente via ftp? Usiamo il passive mode
let g:netrw_ftp_cmd="ftp -p"
" scegliamo fino a quale ricorrenza dell'entità sotto il cursore muoverci
map ,f [I:let nr = input("Which one: ")<bar>exe "normal" . nr ."[t"<CR>

Se conoscete altre personalizzazioni volte a migliorare vim quale editor php ed avete voglia di condividerle commentate sotto.

Categorie

internet opendata piemonte web jeff php programmazione tutorial curiosita governance vim cucina sviluppo apple hardware imac crisi economia politica torino didattica flash illustrazione ricorrenze lapalisse novita release informazione html5 javascript website musica mootools mercato societa vita lavoro HMI interfaccia utente gino gino-news gino-multimedia modernità usa burocrazia jquery django testing libri nova americana etica impresa solidarietà css comunicazioni trasloco ufficio vita sociale entropia immagini fotografia concorso polymer webcomponents programming crowdfunding progetti finanziamento fallimento opensource deploy otto python