VIM Find and Replace

Vi/Vim è uno dei leggendari editor di testo là fuori che trova ancora il suo posto nell’arsenale degli utenti avanzati e professionali. Vim è particolarmente popolare tra i programmatori. Ogni singola distro Linux là fuori include Vim di default. Se stai usando un sistema non-Linux, dovresti comunque essere in grado di godere di questo editor di testo di qualità da qualsiasi sistema. Prendete Vim.

Perché questo antico pezzo di software è ancora rilevante? Perché è leggero, scorciatoie da tastiera per quasi tutte le funzioni, ricerche di espressioni incorporate, e un robusto, stabile e sano ecosistema di plugin. Per non parlare di altre caratteristiche moderne dell’editor di testo come la bellissima evidenziazione della sintassi. Troverete Vim soprattutto popolare tra i programmatori perché Vim richiede una forte attenzione alla tastiera. Questa è una buona pratica per i programmatori.

Come suggerisce il titolo dell’articolo, l’obiettivo di questa guida è di offrirvi una migliore comprensione delle funzionalità di ricerca e sostituzione di Vim. Vim non è nulla di cui aver paura. Infatti, è uno dei superpoteri che avrete sempre al vostro fianco.

All’inizio, abbiamo bisogno di un testo demo. Per imparare Vim, il modo più sicuro è quello di creare un file di testo usa e getta e farci quello che vuoi. In questo modo, anche se qualcosa va storto, non si perde nulla di importante.

Io sto usando Manjaro Linux come sistema Linux. Scopri come installare Manjaro Linux. È una distro basata su Arch che usa pacman come gestore di pacchetti predefinito. Ho generato un file di testo contenente tutti i pacchetti installati sul mio sistema.

pacman -Qqe >> PackageList.txt

cat PackageList.txt

Ora, lanciare il file di testo in Vim!

vim PackageList.txt

Ricerca Vim

Per la ricerca, Vim utilizza la seguente struttura.

?<search_string>

Per esempio, cerchiamo “python”.

?python

Di default, la ricerca si ferma ad un risultato fisso. Per passare al risultato successivo/precedente, usa i seguenti tasti.

Nota: Non dimenticare di premere Invio prima di usare i seguenti tasti. Altrimenti, il termine di ricerca cambierà!

n – Trova la prossima corrispondenza
N – Trova la corrispondenza precedente

Questo è solo il modo base di ricerca. Proviamo un metodo un po’ più potente.

/\<search_string>>

qui, \< è responsabile di indicare l’inizio della stringa di ricerca e /> è per la fine della stringa.

Proprio come l’esempio precedente, usate n o N (dipende dal caso) per navigare nei risultati della ricerca.

La ricerca supporta anche l’uso dei caratteri jolly. Per esempio, ci sono molti pacchetti con estensione “python-“.

Per cercarli tutti, possiamo usare “python*”. Qui, l’asterisco sta dicendo che qualsiasi cosa dopo il prefisso “python”. Per qualsiasi ricerca, l’asterisco può essere ovunque nel termine di ricerca. Ovunque sia, dice a Vim di riempire il vuoto con tutti i possibili dati dell’intero file di testo.

/\<python*/>

Quando stai cercando, Vim metterà sempre il cursore sul carattere iniziale delle corrispondenze. Questa è l’azione predefinita. Non preoccupatevi; Vim permette di cambiare la posizione predefinita del cursore di atterraggio.

/python/e

Qui, l’ultima “e” dice di raggiungere il cursore alla fine della frase corrispondente. Utilizzando l’esempio seguente, si può anche dire di far atterrare il cursore sotto o sopra il risultato della ricerca.

/<search_string>/+2

/<search_string>/-3

È anche possibile spostare il cursore dall’inizio/fine delle corrispondenze di ricerca. Per esempio, il seguente comando farà atterrare il cursore a 3 caratteri accanto all’inizio.

/<search_string>/s+3

/<search_string>/b+3

Qui, la “s” indica l’inizio, “+3” indica 3 caratteri dall’inizio. “b” sta per “inizio”. Funziona anche in modo simile alla “s”. Dallo screenshot, Vim tradurrà automaticamente “b” in “s”.

Se siete interessati all’offset dalla fine delle partite di ricerca, usate “e”.

/<search_string/e-2

Ecco un altro modo fantastico di eseguire una ricerca su un file di testo.

:%s/<search_pattern>/gn

Una spiegazione dettagliata del comando è nella prossima sezione dell’articolo.

Vim replace

Trova e sostituisci è un’altra funzione comune e indispensabile per qualsiasi editor di testo di qualità. Vim, essendo una leggenda, offre un modo robusto per trovare e sostituire il testo desiderato in modo semplice. Il comando per la funzione è semplice ma permette di fare lavori davvero complessi.

:< range> s/<search_string><replace_string><modifier>

Disponiamo ogni parte.

  • range – Definisce l’intervallo di esecuzione della funzione “trova e sostituisci”. Ci sono 2 valori diversi.
    • % – Esegue su tutto il file
    • <start _line><end_line> – Esegue l’azione su un certo insieme di linee.
  • search_string – La stringa da sostituire.
  • replace_string – La nuova stringa che sostituirà quella vecchia.
  • modifier – Determina il comportamento di sostituzione. Ci sono un paio di valori diversi.
    • g – Opzione “globale”. Esegue la sostituzione su ogni occorrenza di una linea.
    • gc – Chiede conferma prima di effettuare ogni sostituzione.
    • gn – Ignora la funzione di sostituzione ed evidenzia le scoperte.

Per esempio, sostituiamo tutti i “python” con “Python3”.

:%s/python/Python3/g

Semplice, vero? Ora, diamo un’occhiata a quello che segue.

:%s/python/Python3/gc

Ci sono una manciata di azioni che potete scegliere. Mentre alcune di esse sono familiari, altre non lo sono. Vediamo cosa significano.

  • y – Permettere l’esecuzione della modifica.
  • n – Non permettere l’esecuzione della modifica.
  • a – Sostituire tutti.
  • q – Abbandonare l’attività.
  • l – Sostituire solo questa occorrenza. Poi, uscire.
  • ^E (Ctrl + E) – Scorre verso l’alto una schermata
  • ^Y (Ctrl + Y) – Scorre verso il basso una schermata

Ora, proviamo la parte del range. Nell’esempio precedente, abbiamo già usato l’intervallo “%”. Ora, è il momento di confinare le nostre ricerche all’interno di un certo numero di righe.

:200,250 s/python/Python3/g

La ricerca inizierà alla linea 200 e finirà alla linea 250. Tra i limiti, tutte le voci “python” saranno cambiate in “Python3”.

Questa funzione non è limitata a un solo termine di ricerca. Puoi includere più termini di ricerca!

:%s/<search_term_1><search_term_2><search_term_3>
/<replace_string>/g

Provo a cambiare tutte le voci “python” e “py” in “Python3”.

:%s/python\|py/Python3/g

Sensibilità alle maiuscole e alle minuscole

Tutti i trucchi descritti in precedenza nella guida sono altamente sensibili alle maiuscole. Devi davvero assicurarti che ogni volta che stai lavorando, stai digitando i caratteri nel caso corretto. Per esempio, “Python”, “python”, “PYTHON” ecc. sono tutte voci diverse.

Se non ti ricordi le maiuscole e le minuscole, basta dire a Vim di diventare case-insensitive!

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

Questa insensibilità può anche essere abilitata direttamente dal file vimrc.

set ignorecase

Ecco un’altra opzione interessante.

set smartcase

Il “ignorecase” forzerà Vim ad ignorare la sensibilità alle maiuscole. Tuttavia, se c’è qualche lettera maiuscola nella vostra ricerca, lo “smartcase” permetterà a Vim di diventare di nuovo sensibile alle maiuscole/minuscole.

Nota: Per far funzionare lo “smartcase”, avete bisogno prima di “ignorecase”.

Pensieri finali

Ci sono un sacco di cose che potete fare con Vim. È l’editor di testo definitivo di cui avrete bisogno. Tutto ciò di cui hai bisogno è solo pazienza e un po’ di pratica.

Goditi!

Lascia un commento

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