Con frecuencia me encuentro tratando de reemplazar, por ejemplo, foo
con bar
y bar
con foo
en un búfer.
La forma en que lo hago generalmente es:
- 3-consulta Reemplaza:
aaa -> @@@
,bbb -> aaa
,@@@ -> bbb
- renunciar a la automatización y simplemente hacer el reemplazo a mano
Supongo que es posible hacer que algo funcione usando la ,
sintaxis query-replace-regexp
para probar si la cadena coincidente es aaa
o bbb
. Pero la sintaxis resultante sería demasiado engorrosa, por lo que nunca lo intenté realmente.
La cuestión es que, dada la frecuencia de la tarea, creo que debe haber una mejor manera de hacerlo en un solo paso, ya sea integrada o en un paquete existente. ¿Esta ahí?
replace
refactoring
T. Verron
fuente
fuente
query-replace
, sé que generalmente es más rápidoM-% str1 str2
que mover el punto y hacer el cambio a mano. Es bueno, porque no tengo que perder el tiempo pensando en lo que será más rápido, incluso si solo ocurre una vezstr1
. Idealmente, me gustaría que la inversión de texto sea igual de rápida, de modo que pueda usarla sin pensarlo también.(setq a (prog1 b (setq b a)))
. E incluso puede haber una forma más simple.\,(if \1 "b" "a")
especialmente feo (en contra de una expresión regular de\(a\)\|b
), pero aún así las palabras deben escribirse dos veces, si eso te molesta.\(aaa\)\|bbb
?Respuestas:
Aquí hay un pequeño comando que hará esto:
fuente
query-replace
la inversión, para que conserve todas sus características? No coincide con el 100% de la definición en mis emacs, pero todavía estoy con 24.5 ...query-replace
familia de funciones de la última versión, por lo que conserva todas las características. Al final de la función, agregué mi forma recomendada de intercambiar cadenas mencionadas en el manual de Emacs.backward
yregion-noncontiguous-p
desde la llamada aperform-replace
. ¿Es un problema general o significa que la interfazperform-replace
ha cambiado entre versiones?Instalar plur
y ejecuta el comando
plur-query-replace
y entrada
{foo,bar}
y su reemplazo{bar,foo}
Presiona
y
para reemplazar las ocurrencias como desees.También hay variantes no interactivas y similares a la búsqueda de este comando.
fuente
;)
plur
requiereemacs 24.4
.