Con frecuencia me encuentro tratando de reemplazar, por ejemplo, foocon bary barcon fooen 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-regexppara probar si la cadena coincidente es aaao 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 str2que 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-replacela 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-replacefamilia 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.backwardyregion-noncontiguous-pdesde la llamada aperform-replace. ¿Es un problema general o significa que la interfazperform-replaceha cambiado entre versiones?Instalar plur
y ejecuta el comando
plur-query-replacey entrada
{foo,bar}y su reemplazo{bar,foo}Presiona
ypara reemplazar las ocurrencias como desees.También hay variantes no interactivas y similares a la búsqueda de este comando.
fuente
;)plurrequiereemacs 24.4.