Articles

Vim cerca e sostituisci

Posted on

Vim è un avanzato e popolare editor di testo che viene preinstallato nella maggior parte delle distribuzioni Linux. È un editor di testo basato sulla linea di comando che è per lo più utilizzato in sistemi operativi non basati su GUI. È altamente configurabile e viene fornito con un sacco di caratteristiche. Un punto significativo riguardo a Vim è che è altamente ottimizzato per la ripetizione.

In questo articolo, spiegheremo una delle sue caratteristiche più utili che è la ricerca e sostituzione. Con una manciata di configurazioni, puoi cercare qualsiasi cosa tu voglia alla velocità sfrenata e con una granularità più fine.

Metodo #1 Trova e sostituisci un’occorrenza alla volta (usando il comando slash e dot)

Il modo più semplice per cercare e sostituire una parola in Vim è usando il comando slash e dot. La barra (/) può essere usata per cercare una parola mentre il punto (.) può essere usato per sostituire quella parola.

Seguite i seguenti semplici passi per cercare e sostituire qualsiasi parola nell’editor Vim:

  • Aprire il file in Vim
  • Premere la barra (/) insieme al termine di ricerca come “/ search_term” e premere Enter. Evidenzierà la parola selezionata.
  • Poi premete il tasto cgn per sostituire la parola evidenziata e inserite il replace_term
  • Tornate alla modalità normale. Successivamente, premete “n” per passare alla prossima occorrenza del termine di ricerca.
  • Poi premete il punto (.) se volete sostituire la prossima occorrenza con lo stesso replace_term altrimenti premete di nuovo il tasto “n” per passare alla prossima occorrenza.

È il metodo più veloce e migliore per le funzioni di ricerca e sostituzione di base poiché comporta solo poche pressioni di tasti e meno disturbo al vostro lavoro corrente. Tuttavia, per la ricerca di una parola che ricorre troppe volte, diventerà un compito ripetitivo e dispendioso in termini di tempo.

Con Vim, c’è un altro modo migliore per evitare questo compito ripetitivo che è usare il comando substitute.

Metodo #2 Trova e sostituisci usando il comando Substitute

Il comando substitute può essere usato per eseguire funzioni di ricerca e sostituzione da base ad avanzate con un singolo comando. La sintassi per questo comando è:

$ :s/<search_term><replace_term>/option

Nota che devi inserire questo comando in modalità normale.

Dove

  • S: sta per substitute
  • search_term: la parola che volete cercare e sostituire
  • replace_term: la parola con cui volete sostituirla
  • Option: c (per la conferma), g (sostituisce tutte le occorrenze in una riga), i (per ignorare il caso)

Ricerca e sostituzione

Per eseguire una ricerca e sostituzione di base utilizzando il comando substitute, utilizzare la seguente sintassi:

:%s/<search_term><replace_term>/g

Questo comando sostituirà tutte le istanze di search_term con replace_term.

Per esempio, questo è il nostro testo di esempio:

“Ubuntu è uno dei sistemi operativi Linux più usati. Ubuntu include migliaia di programmi utili. Con la riga di comando di Ubuntu, puoi realizzare quasi ogni tipo di compito”.

Per sostituire ogni occorrenza di “Ubuntu” con “Debian” nel testo seguente, verrebbe utilizzato il seguente comando:

:%s/Ubuntu/Debian/g

Cerca e sostituisci in una singola linea

Per cercare e sostituire l’occorrenza di una parola solo in una singola linea invece che nell’intero file, usa la seguente sintassi:

:s/<search_term></replace_term/g

Per esempio, per sostituire l’occorrenza di Ubuntu con Debian nel testo di esempio sopra, si usa il seguente comando senza il simbolo %:

:s/Ubuntu/Debian/g

Cerca e sostituisci con conferma

Se vuoi che ti venga chiesta conferma prima di sostituire il termine di ricerca, usa “c” alla fine del comando di ricerca come segue:

:s/<search_term><replace_term>/gc

Il comando precedente chiederà conferma prima di ogni sostituzione (Inserire y per sì e n per no).

Case insensitive Search and Replace

Quando esegui una ricerca e sostituzione in Vim, per default è case sensitive. Puoi eseguire una ricerca non sensibile alle maiuscole aggiungendo “i” alla fine del comando come segue:

:s/<search_term><replace_term>/gi

Ad esempio, per cercare il termine “Ubuntu” indipendentemente dal suo caso (UBUNTU, Ubuntu, ubuntu, uBuntu), si utilizzerebbe il seguente comando:

:s/ubuntu/debian/gi

Cerca e sostituisci la parola intera

Di default il comando substitute cerca qualsiasi corrispondenza sia parziale che completa. Per far corrispondere l’esatto search_term e poi sostituirlo con il replace_term, racchiudete il search _term all’interno del “<>”.

Per esempio, in alcuni documenti, volete cercare e sostituire la parola esatta “you” con “me”. In questo caso, si userebbe il seguente comando:

:s/\<tu>/me/

Troverà la parola “tu” e la sostituirà con “me”. Tuttavia, non sostituirà le parole come “tuo”.

Cerca e sostituisci parole tra linee particolari

Per cercare una parola tra linee particolari invece di una sola linea o l’intero file, si può usare la seguente sintassi:

:<start_line><fine_linea>s/<search_term><replace_term>/g

Per esempio, per cercare e sostituire le occorrenze di Ubuntu con Debian dalle righe che vanno da 3 a 8 in qualche file, il comando sarebbe:

:1,10s/ubuntu/debian/g

Per cercare e sostituire l’occorrenza di una parola dalla riga corrente al prossimo x numero di righe, si userebbe la seguente sintassi:

:s/search_term/replace_term/g x

Similmente, per cercare e sostituire l’occorrenza di una parola dalla riga corrente all’ultima riga: si userebbe la seguente sintassi:

:.,$s/search_term/replace_term/g

CONCLUSIONE

In questo articolo, abbiamo imparato i due modi a riga di comando per cercare e sostituire qualsiasi parola in un editor Vim. Il primo comando che usava la barra e il punto è il metodo più semplice e facile, ma risulta essere ripetitivo quando si cerca e si sostituisce una parola che ricorre troppe volte. L’altro comando che è il comando di sostituzione una volta potrebbe sembrare difficile e complesso, ma una volta che si inizia a praticarlo, lo si troverà estremamente utile in molteplici scenari.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *