I często znajduję się próbując zastąpić np fooz bara barz foow 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-regexpcelu sprawdzenia, czy dopasowany ciąg to aaalub 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-replacewiem, że zazwyczaj szybsze M-% str1 str2jest 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?