Vim: sostituire testo in tutti i buffer aperti con un solo comando

Vim: è necessario sostituire del testo in tutti i buffer aperti?

Avete necessità di effettuare una sostituzione tra due parole o frammenti di testo in tutti i documenti aperti?

La prima opzione è quella di aprire tutti i documenti e di effettuare una ricerca con sostituzione in ciascuno di essi.

La stringa di ricerca e sostituzione sarebbe simile a quella sotto riportata dove foo sarebbe il dato da sostituire e bar il dato sostituto.

%s/foo/bar/g

La lettera g a fine stringa determina la sostituzione globale evitando la richiesta di accettazione per ogni elemento sostituito.

Vim: è possibile effettuare l’operazione con un solo comando?

Quello precedentemente illustrato è già un buon sistema, ma si può fare di meglio: si possono sostituire tutti gli elementi in tutti i documenti aperti in Vim con un unico comando.

Il comando è il seguente:

:bufdo %s/foo//g | w

In pratica il comando bufdo estende l’operazione a tutti i buffer aperti. Il nome stesso è mnemonico in quanto deriva da: buffer do, ovvero da fare in ogni buffer.

La barra verticale visibile alla fine della formula costitisce un argomento del comando che lancia, dopo che ogni buffer ha completato le sostituzioni, il comando posto alla destra della barra stessa.

In questo caso, il comando posto alla destra è la lettera w che scrive (write), ovvero salva, i rispettivi buffer.

Se non fosse presente la barra verticale sarebbe salvato soltanto l’ultimo documento elaborato.

Grazie per l’attenzione

Pubblicato in origine su https://francopasut.netlify.app

Commenti

Post popolari in questo blog

PCT e collegamenti ipertestuali tra atti e documenti in Word, Writer e LaTeX

Atti giudiziari: utilizzare le variabili al posto dei nomi propri in Word, Writer e LaTeX