나는 자주 자신이 예를 대체하려고 찾아 foo
와 bar
와 bar
와 foo
버퍼에.
내가 보통하는 방법은 다음 중 하나입니다.
- 3 쿼리 대체한다 :
aaa -> @@@
,bbb -> aaa
,@@@ -> bbb
- 자동화를 포기하고 손으로 교체하십시오.
일치하는 문자열이 또는 인지 테스트하기 위해 ,
구문을 사용하여 작동하는 것을 얻을 수 있다고 가정합니다 . 그러나 결과 구문은 너무 번거로울 수 있으므로 실제로 시도하지 않았습니다.query-replace-regexp
aaa
bbb
문제는 작업이 얼마나 일반적인지를 감안할 때 내장 또는 기존 패키지로 더 나은 단일 단계의 작업 방법이 있어야한다고 생각합니다. 있습니까?
단일 단계 방법이있을 수 있지만 첫 번째 방법은 나쁘지 않습니다 (IMO). 그리고 교체 문자열을 바로 선택하면 두 번째 패스에 대해 쿼리하지 않고 교체 할 수 있습니다.
—
Drew
@Drew 정기적으로
—
T. Verron
query-replace
, 나는 M-% str1 str2
포인트를 옮기고 손으로 변경하는 것보다 일반적으로 빠르다는 것을 알고 있습니다. 한 번만 발생하더라도 가장 빠른 것을 생각하는 데 시간을 낭비 할 필요가 없기 때문에 좋습니다 str1
. 이상적으로는 텍스트 반전이 빠른 속도로 수행되기를 원하므로 그것에 대해 생각하지 않고도 사용할 수 있습니다.
누군가 간단한 답변을 제공 할 것입니다. 예를 들어 교체 할 Lisp 표현식을 사용하여 교체 할 텍스트를 참조하여 원하는 작업을 수행 할 수 있습니다. 예를 들어, 교환 숙어와 비슷한 것을 사용하십시오
—
Drew
(setq a (prog1 b (setq b a)))
. 그리고 더 간단한 방법이있을 수도 있습니다.
나는
—
politza
\,(if \1 "b" "a")
특히 못생긴 (정규 표현식에 대해) 찾지 \(a\)\|b
못하지만 단어가 두 번 입력되어야합니다.
왜 안돼
—
politza
\(aaa\)\|bbb
?