Я часто ловлю себе намагається замінити , наприклад , foo
з bar
і bar
з foo
в буфері.
Я зазвичай це роблю:
- 3 запити-Замінює:
aaa -> @@@
,bbb -> aaa
,@@@ -> bbb
- відмовтеся від автоматизації і просто зробіть заміну вручну
Я припускаю, що можна перевірити, чи відповідає збіг рядка або що- небудь працює, використовуючи ,
синтаксис . Але отриманий синтаксис був би занадто громіздким, тому я його ніколи не намагався.query-replace-regexp
aaa
bbb
Вся справа в тому, наскільки це загальне завдання, я думаю, що повинен бути кращий, одноетапний спосіб його виконання, або вбудований, або в існуючому пакеті. Є там?
Можливо, є один крок, але ваш перший шлях непоганий, ІМО. І якщо ви обираєте рядок заміни правильно, то ви можете просто зробити заміну без запитів для другого проходу.
—
Дрю
@Drew Зазвичай
—
Т. Веррон
query-replace
я знаю, що зазвичай швидше, M-% str1 str2
ніж рухати крапку і робити зміни вручну. Це приємно, адже мені не потрібно витрачати час на роздуми про те, що буде найшвидше, навіть якщо є лише один випадок str1
. В ідеалі я хотів би, щоб інверсія тексту була настільки ж швидкою, щоб я міг використовувати її, не замислюючись про це.
Хтось дасть просту відповідь. Ви можете, без сумніву, робити те, що ви просите, наприклад, використовуючи вираз Lisp для заміни, посилаючись на текст, що підлягає заміні. Наприклад, використовуйте щось подібне до ідіоми swap
—
Дрю
(setq a (prog1 b (setq b a)))
. І навіть може бути простіший спосіб.
Я не вважаю
—
politza
\,(if \1 "b" "a")
особливо некрасивим (проти зворотного перегляду \(a\)\|b
), але все-таки слова потрібно вводити двічі, якщо це вас турбує.
Чому ні
—
politza
\(aaa\)\|bbb
?