Mi trovo spesso a cercare di sostituire, ad esempio, foo
con bar
e bar
con foo
in 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-regexp
per verificare se la stringa corrispondente è aaa
o 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 str2
che 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
?