Vim: studio sulla trasposizione di elenchi di nomi da orizzontali a verticali
Indice dei Contenuti
Obiettivo primario dello studio
- Stato iniziale: serie di nomi in linea, separati da un punto e virgola seguito da uno spazio.
- Obiettivo: trasporre tutti i nomi in una colonna eliminando sia punti e virgola che gli spazi.
- Finalità: Creazione di elenco per mail-merging con client di posta elettronica (Thunderbird).
- Strumenti: Vim e funzione RegEx incorporata.
- Esempio:
Da:
One@mail; Two@mail; Three@mail; ...
A:
One@mail Two@mail Three@mail ...
Obiettivo secondario
Provare l’integrazione tra Markdown e tag css.
Questo obiettivo è stato realizzato nell’Esempio sopra riportato mediante inserimento del seguente codice:
<p style="text-align: center; font-weight: bold;">
Da:
</p>
<pre>
One@mail; Two@mail; Three@mail; ...
</pre>
<p style="text-align: center; font-weight: bold;">
A:
</p>
<pre>
One@mail
Two@mail
Three@mail
...
</pre>
Vim: espressione regolare per l’obiettivo primario
Per ottenere la trasposizione da orizzontale a verticale, oggetto dell’obiettivo primario, si usa la seguente formula:
:%s/; /\r/g
Analisi della formula:
:%s
: attivazione della modalità di sostituzione in tutto il documento/; /
: ricerca della stringa da sostituire, notare lo spazio dopo il punto e virgola che corrisponde alla struttura originaria dell’elenco.\r/
: sostituzione della stringa trovata con il comando precedente con un ritorno a capo.g
: opzione global, ovvero applicazione del risultato a tutte le istanze trovate.
Ed ora: il procedimento inverso
A questo punto provo anche il procedimento inverso: dall’elenco verticale a quello orizzontale delimitato da punto e virgola seguito da uno spazio vuoto.
In pratica da
One@mail Two@mail Three@mail ...
a
One@mail; Two@mail; Three@mail; ...
La stessa formula sopra indicata può essere utilizzata con fattori invertiti:
%s/\n/; /g
dove con \n
seleziono i ritorni a capo e con /; /g
li sostituisco con un punto e virgola ed uno spazio.
Grazie per l’attenzione.