---
title: "¤occur 이맥스 버퍼 특정 문자열 정규표현식 탐색 변경"
url: "https://notes.junghanacs.com/notes/20250710T141411"
author: "Junghan Kim"
date: "2025-07-10T14:14:00+09:00"
lastmod: "2025-07-10T00:00:00+09:00"
tags: ["emacs","regex","replace","packages"]
description: "Emacs의 occur로 버퍼 안 정규표현식 검색 결과를 모아 보고 필요한 줄을 빠르게 수정하는 법을 적어 둔다."
---

> [!abstract] 이 노트에 대하여
> 
> occur가 버퍼 안의 특정 문자열과 정규표현식 일치를 한눈에 모아 보여 주는 방식을 설명한다. 정규식 기반 일괄 점검과 수정 흐름을 빠르게 떠올리게 하는 Emacs 노트다.

## 히스토리

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

## 관련메타

-   [†#정규표현식 #정규식](https://notes.junghanacs.com/meta/20230727T091700)
-   [†#일괄편집 #증분검색](https://notes.junghanacs.com/meta/20240901T122732)

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

Emacs에서

`M-x occur RET ^| RET`

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

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

## 로그

### [|2025-07-10 Thu 14:14|](https://notes.junghanacs.com/journal/20250707T000000#2025-07-10-thu)

#### @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):**

```elisp
(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
