<Precedenti | Contenuti | Succ.>
Ricerca e sostituzione globale
vi utilizza un comando ex per eseguire operazioni di ricerca e sostituzione (chiamate "sostituzione" in vi) su un intervallo di righe o sull'intero file. Per modificare la parola "Line" in "line" per l'intero file, digitiamo il seguente comando:
:%s/Linea/linea/g
:%s/Linea/linea/g
Scomponiamo questo comando in elementi separati e vediamo cosa fa ciascuno:
Tabella 12-5: Un esempio di sintassi di ricerca e sostituzione globale
Significato dell'articolo
Significato dell'articolo
: Il carattere due punti inizia un comando ex.
% Specifica l'intervallo di linee per l'operazione. % è una scorciatoia che significa dalla prima all'ultima riga. In alternativa, l'intervallo avrebbe potuto essere specificato 1,5 (dato che il nostro file è lungo cinque righe), oppure 1, $ che significa "dalla riga 1 all'ultima riga del file". Se l'intervallo di righe viene omesso, l'operazione viene eseguita solo sulla riga corrente.
Cerca e sostituisci
s Specifica l'operazione. In questo caso, la sostituzione (ricerca e sostituzione).
/Line/line/ Il modello di ricerca e il testo sostitutivo.
g Significa "globale" nel senso che la ricerca e sostituzione viene eseguita su ogni istanza della stringa di ricerca nella riga. Se omesso, viene sostituita solo la prima istanza della stringa di ricerca su ogni riga.
Dopo aver eseguito il comando di ricerca e sostituzione, il nostro file apparirà così:
La volpe marrone veloce saltò sopra il cane pigro. Era fantastico. riga 2
Linea 3
Linea 4
Linea 5
La volpe marrone veloce saltò sopra il cane pigro. Era fantastico. riga 2
Linea 3
Linea 4
Linea 5
Possiamo anche specificare un comando di sostituzione con conferma da parte dell'utente. Questo si ottiene aggiungendo una "c" alla fine del comando. Ad esempio:
:%s/riga/Riga/gc
:%s/riga/Riga/gc
Questo comando riporterà il nostro file alla sua forma precedente; tuttavia, prima di ogni sostituzione, vi si ferma e ci chiede di confermare la sostituzione con questo messaggio:
sostituire con la riga (y/n/a/q/l/^E/^Y)?
sostituire con la riga (y/n/a/q/l/^E/^Y)?
Ciascuno dei caratteri tra parentesi è una possibile scelta, come segue:
Tabella 12-6: Sostituisci chiavi di conferma
Azione chiave
Azione chiave
y Eseguire la sostituzione.
n Salta questa istanza del pattern.
a Eseguire la sostituzione su questa e tutte le istanze successive del pattern.
q o Esc Esci dalla sostituzione.
l Esegui questa sostituzione e poi esci. Abbreviazione di "last".
Ctrl-e, Ctrl-y Scorrono rispettivamente verso il basso e verso l'alto. Utile per visualizzare il contesto della sostituzione proposta.
Se si digita y, la sostituzione verrà eseguita, n causerà vi per saltare questa istanza e passare a quella successiva.