Mi trovo spesso a cercare di sostituire, ad esempio, foocon bare barcon fooin un buffer.
Il modo in cui lo faccio di solito è:
- 3 di query-sostituisce:
aaa -> @@@,bbb -> aaa,@@@ -> bbb - rinunciare all'automazione e basta fare la sostituzione a mano
Suppongo che sia possibile far funzionare qualcosa usando la ,sintassi query-replace-regexpper verificare se la stringa corrispondente è aaao bbb. Ma la sintassi risultante sarebbe troppo ingombrante, quindi non l'ho mai veramente provato.
Il fatto è che, dato quanto sia comune un compito, penso che ci debba essere un modo migliore, in un solo passaggio, di farlo, integrato o in un pacchetto esistente. È lì?
query-replace, so che di solito è più veloce M-% str1 str2che spostare il punto e fare il cambio a mano. È bello, perché non devo perdere tempo a pensare a ciò che sarà più veloce, anche se si verifica una sola occorrenza str1. Idealmente, mi piacerebbe che l'inversione del testo fosse altrettanto veloce, in modo da poterla usare anche senza pensarci.
(setq a (prog1 b (setq b a))). E potrebbe esserci anche un modo più semplice.
\,(if \1 "b" "a")particolarmente brutto (contro una regexp di \(a\)\|b), ma le parole devono essere digitate due volte, se questo ti dà fastidio.
\(aaa\)\|bbb?