히스토리

  • [2025-07-10 Thu 14:14] occur 사용법을 문득 배움

관련메타

특정 패턴을 찾아서 새로운 버퍼로 모으기

Emacs에서

M-x occur RET ^| RET

로 테이블 위치를 한눈에 볼 수 있습니다.

문제되는 테이블 패턴을 위 기준으로 찾아 수정해보세요! 그래도 안되면 해당 테이블 부분을 복사해서 올려주세요.

로그

|2025-07-10 Thu 14:14|

@user 이맥스에서 occur에 대해서 설명해줘. 중복되는 기능들이 있는데 occur의 장점은 무엇인가?

@assistant occur는 Emacs에서 버퍼 내 특정 문자열(또는 정규표현식)이 등장하는 모든 줄을 한 번에 목록으로 보여주는 명령입니다. 주로 M-x occur 또는 =C-u M-s o=로 실행할 수 있습니다.

주요 특징 및 장점:

  1. 빠른 개요 제공: 버퍼 전체에서 검색어가 포함된 줄만 모아 별도의 버퍼(*Occur*)에 리스트로 보여줍니다. 이를 통해 해당 문자열의 전체 맥락을 한눈에 파악할 수 있습니다.

  2. 탐색 용이: *Occur* 버퍼에서 원하는 줄을 선택하면 원본 버퍼의 해당 위치로 즉시 이동할 수 있습니다. (RET 키 사용)

  3. 정규표현식 지원: 단순 문자열뿐 아니라 정규표현식으로도 검색할 수 있어, 복잡한 패턴 탐색이 가능합니다.

  4. 복수 편집: occur-edit-mode=를 이용하면 =*Occur* 버퍼에서 직접 내용을 수정하고, 이를 원본 버퍼에 반영할 수 있습니다.

  5. 경량화: isearch, swiper, grep 등과 달리 외부 프로그램을 사용하지 않고, 현재 버퍼 내에서만 동작하므로 빠르고 가볍습니다.

중복되는 기능과의 차이점:

  • =isearch=(점진적 검색)는 한 번에 한 위치씩 이동하며, 전체 개요를 보기 어렵습니다.
  • =grep=은 여러 파일을 대상으로 하지만, 파일 내 한눈에 보기에는 적합하지 않습니다.
  • =swiper=(ivy 패키지)는 실시간 미리보기를 제공하지만, occur의 목록화/편집 기능은 부족합니다.

요약: =occur=는 버퍼 내 특정 패턴이 어디에 얼마나 등장하는지 빠르게 파악하고, 한눈에 탐색·수정하기에 매우 효율적입니다. 코드나 문서 내 전체 구조를 빠르게 파악하고자 할 때 특히 유용합니다.

@user consult-line과 embark을 사용하는 루틴과 어떤 장단점이 있을까? 둠이맥스의 경우 evil 중심의 키바인딩을 사용하면서 occur에 대한 활용법에 대한 언급이 없다. occur은 빌트인 패키지인 만큼 방법을 익히고 싶다.

@assistant 좋은 질문입니다! 각각의 도구(consult-line, embark, occur)는 목적과 사용 방식에 차이가 있습니다. 아래에 루틴, 장단점, 그리고 doom-emacs(특히 evil 중심 환경)에서의 활용법을 정리해 드립니다.


1. consult-line + embark 루틴
  • consult-line (SPC s l, 또는 M-x consult-line): 현재 버퍼에서 입력한 문자열이 포함된 모든 줄을 실시간 미리보기로 보여줍니다.
  • 원하는 줄에서 embark-act (C-.)을 실행하면, 그 줄이나 단어에 대해 다양한 액션(복사, 편집, 검색 등)을 선택할 수 있습니다.

장점

  • 실시간 미리보기: 입력할 때마다 결과가 바로 갱신됨.
  • embark를 통한 강력한 액션: 검색 결과에서 바로 복사, 이동, 편집 등 가능.
  • 다양한 컨텍스트 지원: embark는 단어, 심볼 등 다양한 객체에 따라 액션 제공.

단점

  • 검색 결과를 한 번에 목록화해서 편집하는 기능은 없음.
  • 정규표현식 검색이 제한적(consult-line은 기본적으로 plain string, consult-ripgrep은 regexp 지원).
  • Emacs 초보자에게는 embark의 액션 체계가 다소 복잡할 수 있음.
2. occur 루틴
  • M-x occur 또는 :occur (evil 명령어로 커맨드 팔레트에서 실행)
  • 정규표현식 입력 → *Occur/ 버퍼에 결과 목록화
  • =RET=으로 원하는 줄로 이동, =occur-edit-mode=로 목록에서 직접 편집 가능

장점

  • 정규표현식 지원: 복잡한 패턴 검색에 유리.
  • 결과 목록화: 한눈에 전체 맥락 파악 및 빠른 이동.
  • 목록에서 직접 편집 가능(occur-edit-mode).
  • Emacs 기본 내장(빌트인), 별도 패키지 필요 없음.
  • evil에서도 기본 명령어로 쉽게 사용 가능.

단점

  • 실시간 미리보기 없음(검색 후 결과 확인).
  • 검색 결과 내에서 추가 필터링이나 액션은 consult/embark에 비해 제한적.
  • UI가 modern 패키지에 비해 투박할 수 있음.
3. Doom Emacs(Evil)에서 occur 활용법
  • :occur 또는 =M-x occur=로 실행(leader 키에 직접 매핑 가능)
  • 결과 버퍼에서 =RET=으로 점프, =C-c C-e=로 편집 모드 진입
  • SPC s o 등으로 leader key mapping을 추가해서 자주 쓸 수 있음

예시 키바인딩 추가법 (config.el):

(map! :leader
      :desc "Occur" "s o" #'occur)

요약
  • consult-line + embark: 빠른 미리보기, 다양한 액션, modern UI. 하지만 결과 목록화/편집은 약함.
  • occur: 정규표현식, 결과 목록화, 편집까지 가능. 빌트인이라 가볍고 evil 환경에서도 쉽게 사용 가능.
  • doom-emacs(특히 evil): occur을 leader key에 매핑해서 자주 쓰기 좋음. 복잡한 패턴이나 전체 구조 파악에 occur을, 빠른 탐색/액션에는 consult-line+embark를 쓰는 식으로 병행 활용 추천.

궁금한 점 있으면 더 물어보세요!

@user