regex emacs replace

regex - Reemplazo interactivo de expresiones regulares de Emacs



replace (3)

Supongamos que tiene un texto con palabras como estas dentro:

"foo" ... "bar" ... "file" ... "emacs"

y todo lo que quiere hacer es reemplazar "con". Sé que solo se puede hacer para solicitar el siguiente reemplazo:

" -> ''''

pero suponga que le gustaría hacerlo de forma interactiva y con expresiones regulares, para un caso más complicado, ¿cómo puede hacerse?

Me explico mejor: me gustaría poder tener un comando, o una serie de ellos, para trabajar de esta manera:

  • Escriba una expresión regular como "//(.*?//)" y vea los resultados de manera interactiva (es decir, las coincidencias actualmente visibles se resaltan a medida que edita la expresión regular y el resaltado siempre se actualiza a medida que realiza cambios).
  • Una vez que esté satisfecho con la expresión regular, especifique un reemplazo como '' ''/1'' ''
  • Reemplaza interactivamente todos los partidos

¿El comando query-replace-regexp satisface sus requisitos? En la mayoría de las instalaciones de Emacs estará vinculada a CM-% .

Ya que eso no satisface los requisitos de OP, sugiera mirar también a re-builder . Esta función no está documentada en el manual de Emacs, o sistema de ayuda, solo está documentada en el manual de Emacs Lisp .


Finalmente me he enterado !!!!! Estos son los pasos a seguir:

  • Mx isearch-forward-regexp

  • Inserte su expresión regular de forma interactiva. Si comete un error, puede usar DEL o Me y navegar a través de su expresión regular para corregirlo.

  • Luego, una vez que haya encontrado lo que desea, presione de inmediato M-% y el reemplazo que le guste y comience a reemplazarlo.

Por lo tanto, puede buscar y reemplazar con expresiones regulares de forma totalmente interactiva e incremental.


  • Ejecute Mx isearch-forward-regexp o CMs .

  • Cuando empiece a escribir una expresión regular, la primera aparición se resaltará instantáneamente. Si intenta retroceder a través de la expresión regular utilizando el cursor, se cancelará la búsqueda, por lo que si comete un error, debe usar Me para permitir la edición, realizar el cambio y luego presionar intro para continuar la búsqueda.

  • Cuando esté satisfecho con la expresión regular, presione M-% , escriba una cadena de reemplazo (o use la tecla hacia arriba para acceder a las cadenas de reemplazo usadas anteriormente), luego presione RET para iniciar la sustitución interactiva.

  • Para cada aparición, presione y para reemplazar una vez, n para saltar ! para reemplazar todo, RET para salir, o ? para ver más opciones.

  • Para repetir su última búsqueda de expresiones regulares, ingrese CMs luego Cs .

Los detalles completos están en la página del manual .