Guida avanzata a Solaris

Ricerca e sostituzione con vi

vi offre diversi metodi per ricercare un punto specifico di un file usando una determinata stringa di caratteri. Dispone inoltre di una potente funzione di sostituzione globale.

Ricerca di una stringa di caratteri

Una stringa di caratteri è una qualsiasi sequenza di uno o più caratteri. Può comprendere lettere, numeri, segni di punteggiatura, caratteri speciali, spazi, tabulazioni o ritorni a capo. Una stringa può essere una parola intera o una parte di una parola.

Per ricercare una stringa di caratteri, digitare una barra (/) seguita dalla stringa desiderata e premere Return. vi posizionerà il cursore sulla ricorrenza successiva della stringa specificata. Ad esempio, per ricercare la stringa "meta", digitare /meta e quindi Return.

Digitare n per spostarsi alla ricorrenza successiva della stringa, o N per tornare alla ricorrenza precedente.

Per eseguire una ricerca all'indietro si utilizza il carattere ? al posto di /. Gli effetti di n e N per lo spostamento in avanti e all'indietro vengono invertiti.

I comandi di ricerca distinguono di norma tra maiuscole e minuscole: se la stringa impostata è "cina", nel processo di ricerca non verrà trovata la parola "Cina". Per fare in modo che vi ignori la differenza tra maiuscole e minuscole durante la ricerca, digitare :set ic. Per ripristinare l'impostazione di default, digitare :set noic.

Se vi trova la stringa ricercata, il cursore si ferma alla sua prima ricorrenza. Se la stringa non viene trovata, vi visualizza sull'ultima riga dello schermo il messaggio Stringa non trovata.

Alcuni caratteri speciali ( / & ! . ^ * $ \ ?) hanno un significato particolare per il comando di ricerca, e per essere utilizzati all'interno di una stringa di ricerca devono essere preceduti dal carattere di escape (\). Ad esempio, per ricercare la stringa "qualcosa?" digitare /qualcosa\? e premere Return.

Questi caratteri speciali possono essere utilizzati come comandi per la funzione di ricerca; per essere interpretati in modo letterale nella stringa da ricercare devono essere preceduti da una barra rovesciata. Per utilizzare in senso letterale una barra rovesciata, digitare \\.

Funzioni avanzate di ricerca

Per rendere i processi di ricerca più precisi, è possibile inserire nella stringa da ricercare speciali indicatori per le seguenti caratteristiche:

Per ricercare una stringa collocata all'inizio di una riga, far precedere la stringa da un accento circonflesso (^). Ad esempio, per ricercare la prima riga che inizia con "Ricerca", digitare:

/^Ricerca

Per ricercare una stringa collocata alla fine di una riga, digitare alla fine della stringa il simbolo del dollaro ($). Ad esempio, per ricercare la prima riga che termina con la stringa "ricerca.", digitare:

/ricerca\.$

(Si osservi che il punto è preceduto da una barra rovesciata.)

Per ricercare una stringa posta all'inizio di una parola, digitare \< all'inizio della stringa; per ricercare una stringa posta alla fine di una parola, digitare \> alla fine della stringa. Per ricercare una parola intera, combinare le opzioni di inizio-parola e fine-parola nel modello di ricerca. Ad esempio, per ricercare la ricorrenza successiva della parola "ricerca" anziché della stringa "ricerca", digitare:

/\<ricerca\>

Per ricercare un qualsiasi carattere in una data posizione, digitare un punto (.) nella posizione desiderata della stringa. Ad esempio, per ricercare la ricorrenza successiva di "formato" o "formati", digitare:

/format.

In questo caso, poiché la ricerca si riferisce a una stringa e non a una parola, potranno essere trovati anche termini come "disinformato" o "informatica".

Per ricercare caratteri alternativi in una stringa, indicare le alternative racchiuse tra parentesi quadre. Il modello di ricerca /[md]stringa troverà le stringhe che iniziano con m o con d. Specificando invece il modello di ricerca /[d-m]stringa, verranno trovate tutte le stringhe che iniziano con una qualsiasi lettera dalla d alla m.

Per cercare nessuna o più ricorrenze di un carattere, digitare un asterisco (*) dopo il carattere desiderato. Utilizzando in combinazione le parentesi quadre e l'asterisco è possibile ricercare specifici modelli alternativi. Ad esempio, per ricercare tutte le stringhe che iniziano con una lettera dalla a alla z e finiscono con "formato" e tutte le ricorrenze della stringa "formato", digitare:

/[a-z]*formato

Sostituzione di una stringa di caratteri

La procedura per la sostituzione di una stringa di testo è basata sulle procedure di ricerca descritte in precedenza. Tutti i caratteri speciali disponibili per la ricerca possono essere utilizzati anche per le operazioni di ricerca e sostituzione.

La sintassi base del comando è la seguente:

:g/stringa-di-ricerca/s//stringa-di-sostituzione/g

seguita da Return.

Per sostituire ad esempio tutte le ricorrenze della stringa "formato" con la stringa "dimensioni" digitare:

:g/formato/s//dimensioni/g

e premere Return.

Questo comando può essere modificato in modo che vi fermi la ricerca e chieda conferma della sostituzione ad ogni ricorrenza della stringa. Nel comando dell'esempio seguente, le opzioni gc specificano a vi di fermarsi ad ogni ricorrenza di "formato" e di chiedere conferma della sostituzione. Rispondere con y per sì o con n per no.

:g/formato/s//dimensioni/gc


Nota -

Per annullare una procedura di ricerca e sostituzione con richiesta di conferma, premere Ctrl-C.


Spostamento a una riga specifica

Per spostarsi sull'ultima riga del file corrente, digitare G. Per tornare alla prima riga, digitare 1G.

Per spostarsi su una qualsiasi altra riga specifica, digitare il numero della riga seguito da G.

Se ad esempio il file prova viene chiuso quando ci si trova alla riga 51, all'apertura successiva del file è possibile tornare direttamente a quella riga digitando 51G.