답변:
내장 기능 만 사용하는 한 가지 방법이 있습니다.
의 첫 번째 항목이 포함 된 줄에 점이 있으면를 begin
누릅니다 C-SPC.
다음 항목으로 이동 end
:
C-s end
RET
교체 foo
로 bar
:
M-% foo
RET bar
RET !
이것은 query-replace
버퍼가있는 경우 전체 버퍼 대신 활성 영역에서 작동 한다는 사실을 이용합니다 .
물론 사용자 정의 명령을 정의 할 수도 있습니다.
(defun replace-from-to (beg end str repl)
(interactive "sBegin: \nsEnd: \nsString: \nsReplacement: ")
(save-excursion
(goto-char (point-min))
(let ((start-pos (search-forward beg))
(end-pos (search-forward end)))
(replace-string str repl nil start-pos end-pos))))
이 명령은 항상 버퍼의 시작 부분부터 검색하므로 호출 할 때 begin
/ foo
/ 뒤에 포인트가있을 수 있습니다 end
.
다음을 통해 키 바인딩을 설정하십시오.
(global-set-key (kbd "C-c r") 'replace-from-to)
일반적으로 이것은 당신이 사용할 것 narrow-to-region
입니다.
커서를 영역의 시작 부분으로 이동하고 (예 : 검색)을 누른 C-SPC
다음 영역의 끝으로 이동하여을 입력 M-x narrow-to-region
합니다. 이제 원하는 검색 및 바꾸기 명령을 실행할 수 있으며 버퍼의 좁은 부분에만 적용됩니다. 완료되면 입력 M-x widen
하여 버퍼 내용을 복원하십시오.
begin
/ end
가 프로그래밍 언어의 구분 기호 인 경우 하나의 명령으로 영역을 선택 하기 C-M-Space
위해 실행할 수 있습니다 mark-sexp
.
C-x n n
( narrow-to-region
) 및 C-x n w
( widen
).