Eu frequentemente me pego tentando substituir, por exemplo, foo
por bar
e bar
com foo
em 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-regexp
para testar se a sequência correspondente é aaa
ou 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 str2
que 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
?