Linux

Trova e sostituisci in Vim / Vi

Trova e sostituisci in Vim / Vi

Questo articolo descrive come trovare e sostituire il testo in Vim/Vi.

Vim è l'editor di testo da riga di comando più popolare. Viene preinstallato su macOS e sulla maggior parte delle distribuzioni Linux. Trovare e sostituire il testo in Vim è facile e veloce.

Trova e sostituisci di base #

In Vim, puoi trovare e sostituire il testo usando il :sostituto (:S) comando.

Per eseguire comandi in Vim, devi essere in modalità normale, la modalità predefinita all'avvio dell'editor. Per tornare alla modalità normale da qualsiasi altra modalità, basta premere il tasto 'Esc'.

La forma generale del comando di sostituzione è la seguente:

:[intervallo]s/modello/stringa/[flag] [conteggio] 

Il comando cerca ogni riga in [gamma] per un modello, e lo sostituisce con a corda. [contare] è un numero intero positivo che moltiplica il comando.

se no [gamma] e [contare] sono dati, viene sostituito solo il modello trovato nella riga corrente. La riga corrente è la riga in cui è posizionato il cursore.

Ad esempio, per cercare la prima occorrenza della stringa "foo" nella riga corrente e sostituirla con "bar", dovresti usare:

:s/pippo/bar/ 

Per sostituire tutte le occorrenze del modello di ricerca nella riga corrente, aggiungi il g bandiera:

:s/pippo/bar/g 

Se vuoi cercare e sostituire il motivo nell'intero file, usa il carattere percentuale % come una gamma. Questo carattere indica un intervallo dalla prima all'ultima riga del file:

:%s/pippo/bar/g 

Se la corda parte viene omessa, viene considerata come una stringa vuota e il modello corrispondente viene eliminato. Il seguente comando elimina tutte le istanze della stringa 'foo' nella riga corrente:

:s/pippo//g 

Invece del carattere barra (/), è possibile utilizzare qualsiasi altro carattere a byte singolo non alfanumerico tranne che come delimitatore. Questa opzione è utile quando hai il carattere '/' nel modello di ricerca o nella stringa di sostituzione.

:s|pippo|bar| 

Per confermare ogni sostituzione, utilizzare il tasto c bandiera:

:s/pippo/bar/gc 
sostituire con bar (y/n/a/q/l/^E/^Y)? 

stampa per sostituire la partita o io per sostituire la partita e uscire. stampa n per saltare la partita e q o Esc smettere di sostituire. Il un l'opzione sostituisce la corrispondenza e tutte le occorrenze rimanenti della corrispondenza. Per scorrere lo schermo verso il basso, utilizzare CTRL+Y, e per scorrere verso l'alto, usa CTRL+E.

Puoi anche usare le espressioni regolari come modello di ricerca. Il comando seguente sostituisce tutte le righe che iniziano con "foo" con "Vim è il migliore":

:%s/^pippo.*/Vim è il migliore/gc 

Il ^ Il simbolo (accento circonflesso) corrisponde all'inizio di una riga e .* corrisponde a qualsiasi numero di qualsiasi carattere.

Maiuscole/minuscole #

Per impostazione predefinita, l'operazione di ricerca fa distinzione tra maiuscole e minuscole; la ricerca di "Foo" non corrisponderà a "Foo".

Per ignorare le maiuscole per il modello di ricerca, usa il use io bandiera:

:s/Foo/bar/gi 

Un altro modo per forzare l'ignoranza delle maiuscole è aggiungere \c dopo il modello di ricerca. Per esempio, /Linux\c esegue la ricerca ignora caso.

Se hai modificato l'impostazione predefinita delle maiuscole e desideri eseguire la ricerca con distinzione tra maiuscole e minuscole, utilizza il pulsante io bandiera:

:s/pippo/bar/gi 

Maiuscolo \C dopo che il modello forza anche la ricerca della corrispondenza tra maiuscole e minuscole.

Intervallo di ricerca #

Quando non viene specificato alcun intervallo, il comando sostitutivo funziona solo nella riga corrente.

L'intervallo può essere una riga o un intervallo tra due righe. Gli identificatori di riga sono separati da , o ; personaggi. L'intervallo può essere specificato utilizzando il numero di riga assoluto o simboli speciali.

Ad esempio, per sostituire tutte le occorrenze di "foo" con "bar" in tutte le righe a partire dalla riga 3 alla riga 10, dovresti usare:

:3,10s/pippo/bar/g 

L'intervallo è inclusivo, il che significa che la prima e l'ultima riga sono incluse nell'intervallo.

Il punto . carattere indica la riga corrente e $ - il simbolo del dollaro l'ultima riga. Per sostituire 'foo' in tutte le righe a partire dalla riga corrente fino all'ultima:

:.,$s/pippo/bar/ 

L'identificatore di riga può essere impostato anche utilizzando il simbolo '+' o '-', seguito da un numero che viene aggiunto o sottratto dal numero di riga precedente. Se il numero dopo il simbolo viene omesso, il valore predefinito è 1.

Ad esempio per sostituire ogni 'foo' con 'bar' a partire dalla riga corrente e le quattro righe successive, digitare:

:.,+4s/pippo/bar/g 

Sostituendo l'intera parola #

Il comando sostituto cerca il modello come una stringa, non come una parola intera. Se, ad esempio, stavi cercando "gnu", la ricerca trova corrispondenze in cui "gnu" è incorporato in parole più grandi, come "cygnus" o "magnum".

Per cercare una parola intera, digita \< per contrassegnare l'inizio di una parola, inserisci il modello di ricerca, digita \> per segnare la fine di una parola:

Ad esempio, per cercare la parola "pippo" useresti \:

:S/\/bar/ 

Cronologia sostitutiva #

Vim tiene traccia di tutti i comandi che esegui nella sessione corrente. Per sfogliare la cronologia dei comandi sostitutivi precedenti, immettere :S e utilizzare i tasti freccia su/giù per trovare un'operazione sostitutiva precedente. Per eseguire il comando, premi semplicemente accedere. Puoi anche modificare il comando prima di eseguire l'operazione.

Esempi #

Righe di commento (aggiungi # prima della fila) dalle 5 alle 20:

:5,20s/^/#/ 

Decommenta le righe da 5 a 20, ripristina le modifiche precedenti:

:5,20s/^#// 

Sostituisci tutte le istanze di "mela", "arancia" e "mango" con "frutta":

:%s/mela\|arancia\|mango/frutta/g 

Rimuovi gli spazi bianchi finali alla fine di ogni riga:

:%s/\s\+$//e 

Conclusione #

La ricerca e la sostituzione sono una potente funzionalità di Vim, che ti consente di apportare rapidamente modifiche al tuo testo.

Sentiti libero di lasciare un commento se hai domande.

Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...