Ricerche globali
Il comando ex g
permette di eseguire operazioni globali sul file. Tra esse la più comune è una ricerca, ma non solo.
Sintassi:
:[range]g/espr_reg/[comando]
- Applicato a tutte le linee di range, se non indicato allora a tutto il file
- il range + una lista (inizio,fine) come in ed o una espressione regolare
- Ricerca espr_reg un'espressione regolare
- Esegue il comando specificato
p
- mostra le righe trovate#
- mostra le righe col numero di rigad
- cancella le righe trovatey
- copy (yank) delle righe trovatenormal
comando - esegue il comando esteso vi su ogni riga trovata
Esempi
:g/the$/p
- Mostra tutte le righe che terminano con 'the'
:.,$g/^ *pippo/#
- Dalla riga corrente a fine file mostra i numeri e le righe contenenti pippo dopo un qualsiasi numero di spazi da inizio riga
:g/^$/d
- Cancella tutte le righe vuote
:1,/^Examples/g/^Section/+y
- Da inizio file alla riga che comincia con Examples copia la linea dopo quella che inizia con Section
:g/^Section/normal ONew
- Trova tutte le righe che cominciano con Section e aggiungi prima di esse una riga contenente New
Il comando g/Regular_Expression/p
è così usato e utile, che è diventato il comando linux grep
.
Sostituzioni globali
Sintassi:
:[range]s/espr_reg/str_rimpiazzo/[flags][conto]
- Applicato a tutte le linee di range
- Lista (inizio,fine) o espressione regolare
- Il carattere
%
indica l'intero file
- Ricerca espr_reg, un'espressione regolare
- La sostituisce con la stringa di rimpiazzo
- Secondo le modalità dei flags
c
- chiede confermai
- ignora caseI
- obbedisce al case (default)n
- non esegue la sostituzionep
- stampa solo le linee trovate (non è necessaria la stringa di rimpiazzo)
- Esegue conto volte (default una)
n
- (numero) volteg
- ogni volta sulla linea
Le sostituzioni globali sono pericolose poichè possono operare su molto più materiale di quello desiderato, per esempio su sottostringhe.
Si può ripristinare la situazione precedente col comando u
(undo).