Keywords: guide

Next: Ma che succede veramente? Up: Modificare file con Emacs Previous: Tagliare, Incollare, Eliminare

# Cercare e Sostituire

Ci sono parecchi modi per cercare del testo in un file con Emacs; molti sono abbastanza complessi e non li vedremo qui. Il modo più semplice e divertente è usare isearch : ``isearch'' sta per ``ricerca incrementale''. Supponiamo che vogliate cercare la stringa ``leone'' nel seguente testo:

> Gli animali sono creature molto interessanti. Il mio animale preferito è la tigre, un terrificante animale con grandi denti. Mi piace anche il leone--non è di certo un erbivoro!

Dovete spostarvi all'inizio del buffer, o almeno in un punto che sapete precedere la prima ricorrenza della parola da cercare, ``leone'', e premere `C-s`: questo vi pone in modalità ricerca. Adesso iniziate a scrivere la parola che volete trovare, ``leone''. Appena scrivete ``l'', vedrete che Emacs salta alla prima ricorrenza di ``l'' nel testo; se il testo precedente è tutto il contenuto del buffer, allora questa è la lettera ``l'' della parola ``Gli''. Premete ora ``e'' di ``leone'', e Emacs arriverà ad ``animale'', che è la prima ricorrenza di ``le''. La ``o'' farà arrivare Emacs a ``leone'', senza farvi scrivere l'intera parola.

Quello che si fa durante una ricerca incrementale è definire una stringa da cercare. Ogni volta che aggiungete un carattere alla fine della stringa il numero di corrispondenze si riduce, finché non avrete inserito abbastanza caratteri da definire la stringa in modo univoco. Una volta trovata la corrispondenza che cercavate, potete uscire dalla modalità ricerca con il tasto 4#4 o qualsiasi dei tasti di movimento. Se pensate che la stringa da cercare sia indietro nel buffer, allora dovreste usare `C-r`, che esegue la ricerca nella direzione inversa.

Se incontrate una corrispondenza, ma non è quella che cercavate, premete `C-s` nuovamente mentre siete ancora in modalità ricerca: ogni volta che premerete questo tasto vi sposterete nella successiva corrispondenza completa. Se non ci sono più corrispondenze, Emacs dirà che la ricerca è fallita, ma se premete nuovamente `C-s`, la ricerca ripartirà dall'inizio del buffer. Vale anche per `C-r`--ripartirà dalla fine del buffer.

Provate a prendere un buffer di testo semplice ed eseguite la ricerca per la stringa ```gli`''. Digitate innanzitutto quello che cercate, quindi usate ripetutamente `C-s` per andare a tutte le ripetizioni di ``gli''. Notate che questo corrisponde anche a parole che contengono la stringa ``gli''. Per cercare unicamente ``gli'', dovete aggiungere uno spazio alla fine della stringa da cercare. Potete aggiungere caratteri nuovi alla stringa in qualsiasi punto della ricerca, anche dopo aver premuto ripetutamente `C-s` per trovare le corrispondenze successive. Potete usare anche 121#121 o 125#125 ( 126#126) per rimuovere caratteri dalla stringa di ricerca in qualsiasi momento; premendo 4#4si esce dalla modalità ricerca, lasciandovi all'ultima corrispondenza trovata.

Emacs vi permette anche di sostituire tutte le ripetizioni di una stringa con qualche altra stringa--si chiama cerca-sostituisci. Per richiamarlo, digitate `M-x query-replace` e premete 4#4. Il completamento viene fatto anche sul nome del comando, quindi una volta che avete inserito ``query-re'', potete premere 77#77 per completarlo. Diciamo che volete sostituire tutte le ricorrenze di ``leone'' con ``tigre''. Al prompt ```Query replace`'' digitate ``leone'' e premete 4#4; vi viene richiesto nuovamente dell'input, e dovete inserire ``tigre''. Emacs quindi scorrerà il testo, si fermerà ad ogni ricorrenza della parola ``leone'', e vi chiederà se volete sostituirla. Premete semplicemente ```y`'' o ```n`'' ogni volta, per ``Yes'' o ``No'', finché non finisce. Se non avete capito leggendolo, provateci.

Next: Ma che succede veramente? Up: Modificare file con Emacs Previous: Tagliare, Incollare, Eliminare