2009-12-12 4 views
12

텍스트 영역을 선택하면 해당 영역 내에서만 검색 할 수있는 isearch (또는 다른 검색 명령)를 사용할 수 있습니까? 이 매크로를 매크로 내부의 기술에 사용하고 싶었습니다.이맥스 초보자 질문 - 지역 내에서 검색하는 방법

이것은 분명 할 수도 있지만 빠른 검색을 수행하고 방법을 찾지 못했습니다.

+0

이맥스에서 질문 할 때마다 "그냥 vi를 사용하십시오"라는 대답을 준비하십시오. ;-) –

+6

@dave 및 그 반대로 – vedang

+0

@Dave - Rodger that. 저는 5 년간 vi를 사용해 왔으며 이맥스를 시험해보기로했습니다. 나는 일주일 동안 만 사용해 왔지만, 나는 지금까지 많이 좋아한다. ... – Upgradingdave

답변

25

당신은 명령의 조합 사용할 수 있습니다

M-x narrow-to-region 
C-s SOMETEXT 
M-x widen 

비록, 즉 일종의 부담입니다, 여기에 자동으로 위의 작업을 수행 새 명령입니다.

(defun isearch-forward-region-cleanup() 
    "turn off variable, widen" 
    (if isearch-forward-region 
     (widen)) 
    (setq isearch-forward-region nil)) 
(defvar isearch-forward-region nil 
    "variable used to indicate we're in region search") 
(add-hook 'isearch-mode-end-hook 'isearch-forward-region-cleanup) 
(defun isearch-forward-region (&optional regexp-p no-recursive-edit) 
    "Do an isearch-forward, but narrow to region first." 
    (interactive "P\np") 
    (narrow-to-region (point) (mark)) 
    (goto-char (point-min)) 
    (setq isearch-forward-region t) 
    (isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit))) 

지금 바로 MX isearch 기능 감기 - 지역 RET의 SOMETEXT을, 또는 같은 취향의 키 바인딩에 바인딩 : 트레이 잭슨의 말처럼

(global-set-key (kbd "C-S-s") 'isearch-forward-region) 
+0

감사합니다, Trey, 이것은 완전히 새로운 가능성을 열어줍니다 ;-) – Upgradingdave

+3

결코 좁은 것을 알지 못했습니다. 그리고 넓혀라. 너를 얼마나 사랑하니, 이맥. – mgalgs

17

, 당신은 narrow-to-region을 사용할 수 있습니다 widen. 키보드 단축키를 칩에 넣을거야. 그것들은 기본적으로 비활성화되어 있으며 emacs는 첫 번째 사용시 대화식으로 "undisable"메시지를 표시합니다.

C-x n n 
C-s sometext 
C-x n w 
+0

고마워요, 그래서 다시 한번 말합니다. – Upgradingdave

+0

필자는 적어도 .emacs에 (global-set-key "\ C-xn" '다른 창)을 10 년 동안 가지고 있었는데 그림자가있는 것을 전혀 모르고있었습니다. 감사. –