버퍼에서 문자열을 찾을 때는 helm-swoop

1 minute read

nil

버퍼에서 문자열을 찾고 싶으면 / 키를 눌러 evil-serch-forward 함수를 호출한다. 저걸로 다 되는데, helm-swoop을 사용할 일이 있을까?

문자열이 있는 라인을 helm 버퍼에 보여준다. 패키지 이름에 helm이 붙었으니 배신하면 안되제.

검색 대상 단위가 라인이다. 공백은 문자로 취급하지 않고 AND 연산자로 취급한다. 예를 들면 “helm all” 문자열을 검색한다면 “helm-multi-swoop-all” 문자열도 찾아준다. 여러 단어가 모두 있는 문자열을 찾으려면 검색 대상 단위를 설정해야 한다. 한 줄이 기본 단위다.

C-u 10 M-i

10줄 정도를 검색 대상 단위로 묶어서 찾을 수도 있어? 왜 안 되겠나. Universal Arguments로 원하는 라인 수를 넘기면 된다.

helm-multi-swoop-all
helm-multi-swoop-by-mode
helm-multi-swoop-org
helm-multi-swoop-current-mode
helm-multi-swoop-projectile

버퍼 여러 개에서 찾을 때도 편하다. 많네. 버퍼를 많이 열어 놓는 편이 아니라 주로 helm-multi-swoop-all 함수를 사용한다.

/ 키로 그냥 찾지. 이런 걸 뭐하러 써. 이렇게 생각했는데, 반성합니다.

(use-package helm-swoop
  :ensure t
  :bind
  (("M-i" . helm-swoop)
   ("M-I" . helm-swoop-back-to-last-point)
   ("C-c M-i" . helm-multi-swoop)
   ("C-x M-i" . helm-multi-swoop-all)
   :map
   helm-swoop-map
   ("M-i" . helm-multi-swoop-all-from-helm-swoop)
   ("M-m" . helm-multi-swoop-current-mode-from-helm-swoop)))

C-s 키바인딩을 사용하려고 했다. 홈페이지에서 예제로 보여준 세팅 조합이 마음에 들어서 그대로 따랐다. helm-swoop 함수에서 helm-multi-swoop, helm-multi-swoop-current-mode 함수를 호출하는 키바인딩을 추가하는 게 인상적이다. 그래 이렇게 해놓으면 편하겠다. 찾다가 없으면 범위를 확장하는데, 단축키 한 방으로 편하게 된다.

C-k     helm-delete-minibuffer-contents

커서가 있는 문자열 검색이 기본이다. 미니 버퍼에서 한꺼번에 지우고 싶을 때, 백스페이스 연타는 노노.

C-c h b     helm-resume

helm 패밀리니깐 당연히 지원한다. 해당 라인으로 가서 뭔가 하려고 했는데, 아니다. 그럼 이 키 바인딩을 누르면 된다. 검색 재개한다. 이전에 사용한 검색 단어가 그대로 있다.

홈페이지 - ShingoFukuyama/helm-swoop - github.com

C-x C-s C-x C-c