En el capítulo anterior hemos visto como buscar cadenas en un buffer que estamos editando. Con mucha frecuencia las búsquedas de una cadena no tienen otra finalidad que la de reemplazarla por otra.Es por ello que la funcionalidad de buscar-y-reemplazar se nos presenta como la combinación ideal a este propósito.
Vamos a considerar tres formas de realizar la operación de búsqueda y reemplazo de cadenas:
Para reemplazar todas las cadenas de búsqueda por otra predeterminada, desde la posición del cursor hasta el final de buffer, se procederá de la siguiente manera:
Veamos, gráficamente, el comando C-s en acción:
Nos puede interesar no realizar un reemplazo global de todas las cadenas de búsqueda encontradas, sino poder decidir, en cada ocurrencia encontrada, si proceder o no a su sustitución.
Para realizar los reemplazos de esta forma:
Veamos un ejemplo :
Vamos a iniciar la búsqueda de la cadena el antílope y su reemplazo por la cadena. la gacela
Tecleamos el comando M-% o, alternativamente, ejecutamos la opción de menú Edit-->Replace
En el mini-buffer aparece el mensaje Query replace:
Introducimos la cadena de búsqueda el antílope .
![]() |
Tras pulsar <Enter> aparece el mensaje Query replace el antílope with: en el mini-buffer.
Introducimos la cadena de búsqueda la gacela .
![]() |
Tras pulsar <Enter> vemos como el cursor se coloca inmediatamente despúes de la primera ocurrencia, resaltada en color lila. El resto de las ocurrencias son resaltadas en color azul.
Aparece el mensaje: Query replace el antílope with la gacela: (? for help)
![]() |
Tras confirmar el reemplazo de la cadena de la primera ocurrencia tecleando y o mediante la tecla <Space> ,se realiza la sustitución de cadenas y el cursor pasa a la segunda ocurrencia.
![]() |
En caso de recurrir a la ayuda, pulsando ? , aparecerá el buffer *Help* con las posibles "respuestas" al mensaje de solicitud de confirmación del reemplazo de cadenas. (Incluye las opciones correspondientes al Modo de edición recursivo , que se tratará en el siguiente apartado) i>
![]() |
Como ya se comentó al principio de éste capítulo, el modo de edición recursivo puede considerarse una variedad de Query replace, ya que sólo podremos activarlo en el curso de una búsqueda-reemplazo de este tipo.
Cuando estemos en modo recursivo, podremos desplazar el cursor a las ocurrencias encontradas y editarlas.
Los comandos implicados en el modo de edición recursivo son:

Recordar que estos comandos solo actuarán de la forma descrita si se ejecutan cuando se esta operando en query replace
Como podemos observar, los citados comandos se encuentran , en el buffer *Help* como opciones de query replace.
Por defecto, las básquedas en Emacs no distinguen entre mayúsculas y minúsculas. Es decir, no son sensibles a la caja tipográfica.
Esto es debido a que, por defecto, la opción de menú Options-->Case Insensitive Search se encuentra activada.
Comp puede facilmente deducirse, desactivando la citada opción pasaremos a un modo de búsqueda en el que se distinguirá entre mayúsculas y minúsculas : sensible a la caja tipográfica.
La sensibilidad a la caja de las búsquedas viene determinada por la variable case-fold-search. Por defecto, dicha variable está ajustada al valor t (true) que viene a significar: Ignora la caja excepto si el usuario utiliza combinación de mayúsculas y minúsculas, o todo en mayúsculas, en la cadena de búsqueda. Como se ha comentado mas arriba, esta es la opción que se presenta por defecto
La sensibilidad a la caja de la acción de reemplazo también puede ajustarse, en este caso através de la variable case-replace .Dicha variable viene, por defecto, ajustada al valor t que, como en el caso de las búsquedas, condiciona la sensibilidad a la caja de los reemplazos al formato de las palabras en la cadena original.
No existe una opción de menú para cambiar el valor de esta variable, por lo que, para cambiar el valor de t a nil , deberá procederse de la siguiente forma:
Este procedimiento descrito,es el procedimiento general de asignación de valores a una variable, aplicable también al cambio de valor de case-fold-search , si no deseamos utilizar el menú Options .
Debemos tener en cuenta que los cambios realizados, sea através del menú Options o bién mediante set-variable no son permanentes sino que afectarán solo a la sesión en curso. Cada nueva sesión de Emacs se iniciará con los valores por defecto.
Si deseáramos hacer permanentes los cambios realizados deberiamos :