Я часто ловлю себя пытается заменить , например , foo
с bar
и bar
с foo
в буфере.
Я обычно делаю это либо:
- 3 запроса-Заменяет:
aaa -> @@@
,bbb -> aaa
,@@@ -> bbb
- отказаться от автоматизации и просто сделать замену вручную
Я предполагаю, что можно заставить что-то работать, используя ,
синтаксис, query-replace-regexp
чтобы проверить, соответствует ли строка aaa
или bbb
. Но полученный синтаксис был бы слишком громоздким, поэтому я никогда не пробовал его.
Дело в том, что с учетом того, насколько распространена задача, я думаю, что должен быть лучший, одношаговый, способ сделать это, встроенный или в существующем пакете. Есть?
query-replace
, я знаю, что это обычно быстрее, M-% str1 str2
чем перемещать точку и делать изменения вручную. Это приятно, потому что мне не нужно тратить время на размышления о том, что будет быстрее, даже если есть только один случай str1
. В идеале я хотел бы, чтобы инверсия текста была такой же быстрой, чтобы я мог использовать ее, не задумываясь об этом.
(setq a (prog1 b (setq b a)))
. И может быть даже проще.
\,(if \1 "b" "a")
особенно уродливым (против регулярного выражения \(a\)\|b
), но все же слова нужно вводить дважды, если это вас беспокоит.
\(aaa\)\|bbb
?