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-regexpInserte 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-regexpoCMs.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
Mepara 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 presioneRETpara iniciar la sustitución interactiva.Para cada aparición, presione
ypara reemplazar una vez,npara saltar!para reemplazar todo,RETpara salir, o?para ver más opciones.Para repetir su última búsqueda de expresiones regulares, ingrese
CMsluegoCs.
Los detalles completos están en la página del manual .