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à
- Posizionare il cursore del mouse appena prima del carattere
01
della prima variabile (cioè tra la stringalink_
e il simbolo01
) - Premere il tasto Alt (Alt + Windows se stiamo emulando Notepad++ su Linux) e cliccare col mouse
- Trascinare il mouse di due righe verso il basso, e leggermente verso destra. Dovrebbe apparire una colonna grigia sopra i tre simboli
01
,02
e03
fatto questo selezioniamo la voce Edit – Column editor (oppure Alt+C per la shortcut) per aprire il pannello dell'editor 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.