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
oCMs
.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 presioneRET
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
luegoCs
.
Los detalles completos están en la página del manual .