Eu frequentemente me pego tentando substituir, por exemplo, foopor bare barcom fooem um buffer.
A maneira como costumo fazer é:
- 3 query-substitui:
aaa -> @@@,bbb -> aaa,@@@ -> bbb - desista da automação e faça a substituição manualmente
Suponho que seja possível fazer algo funcionar usando a ,sintaxe query-replace-regexppara testar se a sequência correspondente é aaaou bbb. Mas a sintaxe resultante seria muito complicada, por isso nunca tentei realmente.
A questão é que, dada a complexidade de uma tarefa, acho que deve haver uma maneira melhor de fazer uma única etapa, integrada ou em um pacote existente. Existe?
query-replace, eu sei que geralmente é mais rápido do M-% str1 str2que mover o ponto e fazer a alteração manualmente. É legal, porque não preciso perder tempo pensando no que será mais rápido, mesmo que haja apenas uma ocorrência de str1. Idealmente, gostaria que a inversão de texto fosse tão rápida quanto possível, para que eu possa usá-la sem pensar também.
(setq a (prog1 b (setq b a))). E pode até haver uma maneira mais simples.
\,(if \1 "b" "a")especialmente feio (contra uma regexp de \(a\)\|b), mas ainda assim as palavras precisam ser digitadas duas vezes, se isso a incomoda.
\(aaa\)\|bbb?