Alcuni editors, come ad esempio VI o Notepad++, offrono la possibilità di editare i testi in colonna, ma a volte questa enorme potenzialità è poco sfruttata o addirittura sconosciuta. Sul web si trovano alcune guide sull'argomento, ma nelle traduzioni italiane la funzione è appena accennata. Questo articolo illustra esempi pratici di editing in colonna, allo scopo anche di mostrare i vantaggi di una corretta formattazione del codice. Per praticità faremo riferimento a Notepad++, che è uno dei migliori editor gratuiti disponibili al momento.

Iniziamo considerando il seguente pezzetto di codice in PHP

if ( isset($links[$i]) ) {

if ($links[$i][0] == "info") $link_01 = $links[$i][1] ;

if ($links[$i][0] == "pictures") $link_02 = $links[$i][1] ;

if ($links[$i][0] == "link") $link_03 = $links[$i][1] ;

}

lasciamo perdere quello che fa questo codice e concentriamoci sulla formattazione. I puristi della formattazione diranno che l'indentazione è sbagliata, affermando che è “brutta”. La questione è in realtà molto più grave: il codice qui sopra non è solo mal indentato, ma è anche scomodo da mantenere, perché non permette di sfruttare la piena potenzialità dell'editing in colonna. Proviamo a riformattare il codice in modo più ordinato

if ( isset($links[$i]) ) {

if ($links[$i][0] == "info")   $link_01 = $links[$i][1] ;

if ($links[$i][0] == "photos") $link_02 = $links[$i][1] ;

if ($links[$i][0] == "link")   $link_03 = $links[$i][1] ;

}

e supponiamo di dover cambiare la numerazione delle variabile link_01, link_02 e link_03 per rinominarle ad esempio come: link_10, link_11 e link_12. Con Notepad++ basterà

  1. Posizionare il cursore del mouse appena prima del carattere 01 della prima variabile (cioè tra la stringa link_ e il simbolo 01)
  2. Premere il tasto Alt (Alt + Windows se stiamo emulando Notepad++ su Linux) e cliccare col mouse
  3. Trascinare il mouse di due righe verso il basso, e leggermente verso destra. Dovrebbe apparire una colonna grigia sopra i tre simboli 01, 02 e 03

fatto questo selezioniamo la voce EditColumn editor (oppure Alt+C per la shortcut) per aprire il pannello dell'editor in colonna

Editing in colonna

Editing in colonna

qui potremo inserire, come in figura, i valori Initial number = 10 e Increase by = 1: quando clicchiamo su OK l'editor riempirà la colonna incrementando in automatico la sequenza numerica, producendo esattamente il risultato atteso, ovvero

if ( isset($links[$i]) ) {

if ($links[$i][0] == "info")   $link_10 = $links[$i][1] ;

if ($links[$i][0] == "photos") $link_11 = $links[$i][1] ;

if ($links[$i][0] == "link")   $link_12 = $links[$i][1] ;

}

tutto questo lavoro è ovviamente eccessivo per appena tre righe di codice. La situazione cambia se però il codice in colonna riguarda parecchie decine di righe, come ad esempio la definizione di un lungo array indicizzato in modo esplicito

$my_data = array (

0 => array("1900" , ecc...)

1 => array("1901" , ecc...)

...

99 => array("1999" , ecc...)

in tal caso la possibilità di poter cambiare come vogliamo la numerazione 0,1...99 dell'indice con un paio di click risulta sicuramente più efficiente di qualsiasi operazione manuale!

L'esempio qui sopra serve solamente ad introdurre il concetto, perché le potenzialità dell'editing in colonna vanno molto al di là della numerazione degli array o delle variabili. Possiamo infatti:

  • Selezionare un'intera colonna “senza spessore”, cioè una linea verticale lampeggiante come il cursore, per indentare, cancellare o modificare tutto ciò che sta a destra o sinistra della linea selezionata (che appare in pratica come un lungo cursore verticale)
  • Selezionare una colonna verticale per inserire alcuni caratteri in verticale, mediante l'opzione Text to insert del pannello di figura
  • Selezionare una colonna verticale e digitare Ctrl+C (copia) e poi incollare (Ctrl+V) l'intero rettangolo in un'altra area del testo!

La tecnica dell'editing in colonna permette di ottenere risultati eccezionali soprattutto quando si deve amministrare il file system. Pensiamo ad esempio al grep di alcune risorse su Linux. Catturando l'output del grep come file di testo, e usando un editor in colonna sul file così prodotto, possiamo facilmente trasformare un elenco di files o directories in un elenco di comandi di shell! Consideriamo ad esempio un comando DIR > my_file.txt su Windows che dia come risultato

14/12/2011 13:04 397 index.php

14/12/2011 13:03 408 LEGGIMI.txt

08/06/2011 18:18 16.899 license.txt

ecc...

il contenuto del file può essere trasformato con pochi click in

ren index.php file_01.txt

ren LEGGIMI.txt file_02.txt

ren license.txt file_03.txt

ecc...

Se abbiamo la necessità di gestire directories con centinaia di files, la potenza di questo strumento dovrebbe essere chiara. E non dimentichiamoci che tutto ciò ci da (finalmente) un valido motivo per indentare il codice come si deve, ben diverso dalla “scusa” della bellezza estetica.