열려있는 여러 버퍼에서 텍스트를 찾으려면 어떻게합니까?


36

10 개의 버퍼가 열려 있고 blah10 개의 버퍼에서 모든 항목을 찾으려고합니다 . 어떻게해야합니까?

답변:


31

내장 Emacs 명령을 사용하여 multi-occur또는 multi-occur-in-matching-buffers( M-x multi-occur- TAB RET)를 사용할 수 있습니다 . multi-occur각 버퍼에 사용할 것인지 묻는 메시지를 표시하여 세밀하게 제어 할 수 있지만 지루합니다. multi-occur-in-matching-buffers파일 이름과 일치하는 정규 표현식을 입력 할 수 있습니다 (파일을 방문하는 버퍼에서만 검색). .파일을 방문하는 모든 버퍼에서 검색하려면 파일 regexp로 입력 하십시오.

버퍼 나 파일 목록에 대한 증분 검색 기능도 있지만 multi-occur버퍼 나 파일을 하나씩 나열해야하는 것처럼 지루 합니다.

디렉토리의 모든 파일 또는 특정 패턴과 일치하는 파일이 열려 있는지 여부에 관계없이 검색하려면을 사용할 수 있습니다 grep. 이 변종은 rgrepgrep-find재귀 적으로 하위 디렉토리를 검색 할 수 있습니다.


5
.모든 파일과 일치하는 정규식 이라고 언급하면 ​​+1입니다 .
2699

12

다른 사람들이 언급 한 것 외에도 여기에 다른 두 가지 리소스가 있습니다.

  1. M-x multi-isearch-buffers또는 M-x multi-isearch-buffers-regexp(vanilla Emacs)-여러 버퍼에서 증분 검색.

  2. 당신이 사용하는 경우 차가워을 당신은 사용할 수 있습니다 icicle-search(또는 icicle-occur, 또는 다른 임의의 수의 icicle-search전문)는 여러 파일이나 버퍼를 검색 할 수 있습니다.

(임의의 버퍼 를 검색하고 교체하는 것 외에도 여러 파일 에서이를 수행하는 명령이 있습니다 . grep예를 들어 다른 사람들도 언급했습니다 . A물론 Dired도 있습니다. 그러나 파일 검색에 대해서는 묻지 않았습니다.)


10

이것은 명령을 통해 키로 수행 할 수 있습니다 helm-multi-occur. melpa 에서 helm을 설치 한 후 다음과 같이 명령을 호출 할 수 있습니다 .

M-x helm-multi-occur RET M-a RET

그러면 helm-multi-occur모든 버퍼 가 열립니다 . M-a모든 버퍼를 표시 하는 데 사용 하는 대신 원하는 버퍼를 한 번에 하나씩 선택할 수 있습니다. 최대 이동과 함께 다운 목록 C-nC-p와 마크 버퍼 C-SPC. 모든 버퍼가 표시되면를 눌러 RET표시된 버퍼를 승인하고 검색을 시작하십시오.

init 파일에 다음을 추가하면 :

(require 'helm-regexp)
(eval-after-load "helm-regexp"
  '(setq helm-source-moccur
    (helm-make-source "Moccur" 'helm-source-multi-occur :follow 1)))

;; (source: http://stackoverflow.com/q/14726601)
(defun my-helm-multi-occur-buffers ()
  "multi-occur in all buffers backed by files."
  (interactive)
  (helm-multi-occur
   (delq nil
     (mapcar (lambda (b)
           (when (buffer-file-name b) (buffer-name b)))
         (buffer-list)))))

그런 다음 명령 my-helm-multi-occur-buffers을 바인드하여 파일이 지원하는 모든 버퍼에서 다중 발생을 수행 할 수 있습니다 .


3
helm-swoopMELPA 에서 패키지 를 볼 수도 있습니다 . 이 기능을 제공하고 결과를 빠르게 편집 할 수 있습니다.
Vamsi


6

ibuffermode를 사용 하여 검색하려는 버퍼를 표시 할 수 있습니다 . 텍스트를 검색하거나 정규식을 검색해야하는 경우 ( 기본적으로 ibuffer-do-isearch바인딩 됨)을 호출하십시오 .M-s a C-sibuffer-do-isearch-regexp

에 익숙하지 않은 경우 ibuffer이를 시작하고 Mark 메뉴를 살펴보고 작동 할 버퍼 세트를 선택할 수있는 모든 방법을 확인하십시오.


1

조타 장치를 사용하는 또 다른 방법은 다음과 같습니다 M-x helm-mini M-a C-s blah. 호출 한 후에 helm-mini, M-a모든 개구 버퍼를 표시한다 C-s blah멀티 표시 버퍼에서 발생 할 것이다.


0

또한 helm-mode를 사용하는 솔루션은입니다 helm-swoop.

사용하다

M-x helm-swoop RET

그런 다음 열려있는 모든 버퍼에서 검색하려면 다음을 입력하십시오.

M-i

그런 다음 blah모든 버퍼에서 검색하려면 입력하십시오 . 다른 창에 모든 발생이 표시됩니다.

또는, 당신은 그냥 입력 할 수 있습니다

M-x helm-multi-swoop

그런 다음 M-SPC또는 로 검색하려는 모든 버퍼를 표시하고을 C-SPC누르고 RET검색하십시오 blah.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.