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
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 o
() per rimuovere caratteri dalla stringa di
ricerca in qualsiasi momento; premendo
si esce dalla modalità
ricerca, lasciandovi all'ultima corrispondeza 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
. Il completamento viene fatto anche sul nome del
comando,
quindi una volta che avete inserito ``query-re'', potete premere
per completarlo. Diciamo che volete sostituire tutte le
ricorrenze di ``leone'' con ``tigre''. Al prompt ``Query
replace'' digitate ``leone'' e premete
; 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, provatelo.