私は頻繁に自分自身を例に取って代わるしようとして見つけfoo
てbar
とbar
してfoo
バッファに。
私が通常行う方法は次のいずれかです。
- 3クエリ置き換え:
aaa -> @@@
、bbb -> aaa
、@@@ -> bbb
- 自動化をあきらめて、手作業で交換するだけ
一致する文字列がまたはであるかどうかをテストするために,
構文in query-replace-regexp
を使用して何かを動作させることが可能であると思います。しかし、結果の構文は面倒すぎるので、実際に試したことはありません。aaa
bbb
問題は、タスクがどれほど一般的であるかを考えると、組み込みまたは既存のパッケージのいずれかで、より良い、単一ステップの、それを行う方法が必要だと思います。ある?
シングルステップの方法もありますが、最初の方法は悪くありません、IMO。置換文字列を正しく選択すると、2回目のパスでクエリなしの置換を実行できます。
—
ドリュー
@Drew
—
T.バーロン
query-replace
通常の場合M-% str1 str2
、ポイントを移動して変更を手作業で行うよりも通常は速いことを知っています。素晴らしいのは、たとえが1つしか発生していなくても、最速になるものについて考える時間を無駄にする必要がないからですstr1
。理想的には、テキストの反転も同じくらい速く、それについても考えずに使用できるようにしたいです。
誰かが簡単な答えを提供します。たとえば、置換にLisp式を使用して、置換するテキストを参照するなど、あなたが求めることを間違いなく行うことができます。たとえば、スワップイディオムに似たものを使用します
—
ドリュー
(setq a (prog1 b (setq b a)))
。さらに簡単な方法もあります。
私は
—
ポリツァ
\,(if \1 "b" "a")
特にagaい(正規表現に対して\(a\)\|b
)を見つけることはありませんが、もしそれがあなたを悩ますなら、それでも単語は二度タイプされなければなりません。
どうして
—
ポリツァ
\(aaa\)\|bbb
?