Come eliminare righe basandoci sul primo carattere in VIM
Ti è mai capitato di dover cancellare alcune righe di un file basandoti sul
primo carattere presente sulla linea? Molte volte tale operazione richiede
un'attività manuale molto onerosa in termini sia di tempo impiegato sia di
frustrazione per la ripetitività dell'operazione. Ad esempio, supponiamo di
essere in fase di fattorizzazione del codice, ci accorgiamo di aver
commentato troppe righe di codice in un file e di volerle cancellare tutte.
Vogliamo ad esempio cancellare tutte le righe di codice commentate in
Python (primo carattere di linea #
) oppure in Java (primo carattere di linea
//
).
Come possiamo fare?
Andando ad indagare all'interno dei vari editor testuali grafici, sicuramente troveremo qualcosa che fa al caso nostro, ma la ricerca potrebbe essere lunga e laboriosa.
In questo articolo, ti mostro come rimuovere tali linee, basandoti sul primo carattere, utilizzando vi/Vim/gVim. Questa soluzione funziona sempre e con tutti i file testuali pertanto una volta imparata ed acquisita possiamo riutilizzarla tutte le volte che vogliamo.
Cancellare righe
Per prima cosa, ti mostro come rimuovere tutte le righe che cominciano con un carattere non speciale. Supponiamo di voler rimuovere tutte le righe che cominciano con la lettera B maiuscola; per rimuovere tali linee eseguiamo il seguente comando su VIM dal command mode.
:g/^B/d
Eseguito il comando ci accorgeremo che tutte le righe con il carattere B
ad inizio linea saranno state cancellate. VIM infatti non cancella il contenuto
mantenendo una linea vuota, ma cancella fisicamente la riga.
Cancellare righe con primo carattere speciale
Abbiamo visto quale comando eseguire per rimuovere le linee basandoci sul primo carattere. Tuttavia è importante affrontare una casistica per la quale il precedente comando potrebbe non funzionare a causa della particolarità del primo carattere ricercato.
Quando ci troviamo a lavorare con caratteri speciali, quali ad esempio caratteri
utilizzati dal VIM nella propria sintassi (come il $
), dobbiamo
modificare il comando precedentemente descritto inserendo l'escape.
Supponiamo quindi di voler rimuovere le linee che hanno come primo carattere,
il carattere speciale $
. Dal command mode di VIM, eseguiamo il comando:
:g/^\$/d
In questo caso nota che il carattere speciale $
è preceduto dal
carattere di escape \
.
Il carattere di escape serve a comunicare al VIM di trattare il carattere successivo come carattere e non come costrutto sintattico.
Cancellare righe bianche
La cancellazione delle righe bianche rappresenta un caso particolare gestibile da VIM. Dal command mode, per cancellare le righe bianche eseguiamo il seguente comando:
:g/^$/d
Conclusioni
In questo articolo hai visto come rimuovere le righe di un file basandoti sul primo carattere di ogni riga. Hai visto come cancellare la prima riga basandoti su un carattere normale, un carattere speciale o una linea bianca.