I często znajduję się próbując zastąpić np foo
z bar
a bar
z foo
w buforze.
Zazwyczaj robię to w następujący sposób:
- 3 query-Zastępuje:
aaa -> @@@
,bbb -> aaa
,@@@ -> bbb
- zrezygnuj z automatyzacji i po prostu zrób to ręcznie
Przypuszczam, że możliwe jest uzyskanie działania przy użyciu ,
składni w query-replace-regexp
celu sprawdzenia, czy dopasowany ciąg to aaa
lub bbb
. Ale wynikowa składnia byłaby zbyt kłopotliwa, więc tak naprawdę nigdy tego nie próbowałem.
Chodzi o to, biorąc pod uwagę, jak powszechne jest to zadanie, myślę, że musi istnieć lepszy, jednoetapowy sposób, albo wbudowany, albo w istniejącym pakiecie. Jest tu?
query-replace
wiem, że zazwyczaj szybsze M-% str1 str2
jest przesunięcie punktu i wykonanie zmiany ręcznie. To miłe, ponieważ nie muszę tracić czasu na myślenie o tym, co będzie najszybsze, nawet jeśli jest tylko jedno wystąpienie str1
. Idealnie byłoby, gdyby inwersja tekstu była tak szybka, żebym mogła z niej korzystać również bez zastanowienia.
(setq a (prog1 b (setq b a)))
. I może być nawet prostszy sposób.
\,(if \1 "b" "a")
szczególnie brzydkie (w stosunku do wyrażenia regularnego \(a\)\|b
), ale nadal słowa muszą być wpisywane dwukrotnie, jeśli ci to przeszkadza.
\(aaa\)\|bbb
?