본문 바로가기
컴퓨터 활용(한글, 오피스 등)/기타

Emacs의 Ediff 기능

by 3604 2026. 8. 11.
728x90

Emacs에서 두 파일/버퍼를 비교하는 방법은 Ediff 기능을 이용하는 것입니다.

현재 스크린샷에 보이는 상태는 ediff-buffers 명령어가 실행되어 버퍼(Buffer) 이름을 입력받고 있는 상황입니다.

파일 경로(경로상의 파일)를 직접 비교하고 싶으신 경우와 현재 상황에서 계속 진행하는 방법 두 가지로 나누어 정리해 드립니다.

1. 파일 경로를 직접 입력하여 비교하고 싶은 경우 (추천)

이미 열려있는 버퍼가 아닌, 컴퓨터 디렉토리 내의 두 파일을 경로로 지정해 비교하려면 ediff-files 명령어를 사용해야 합니다.

  1. 명령어 실행: M-x (Alt + x)를 누르고 ediff-files 입력 후 Enter
  2. 첫 번째 파일 선택 (File A):
    • 미니버퍼에 File A to compare:가 뜨면 비교할 첫 번째 파일의 경로(예: c:/del/emacs/a.txt)를 입력하고 Enter를 누릅니다.
  3. 두 번째 파일 선택 (File B):
    • File B to compare:가 뜨면 두 번째 파일의 경로(예: c:/del/emacs/b.txt)를 입력하고 Enter를 누릅니다.

💡 TIP (경로 입력 팁)

  • Windows 환경이라도 Emacs 미니버퍼에서는 역슬래시(\) 대신 슬래시(/)를 사용하는 것이 훨씬 편합니다. (예: c:/del/emacs/a.txt)
  • 경로를 입력할 때 Tab 키를 누르면 파일 및 폴더 이름이 자동 완성됩니다.

2. 현재 화면(버퍼 비교)에서 계속 진행하려는 경우

현재 스크린샷은 ediff-buffers 상태입니다. 이미 Emacs 내에 파일들을 열어둔 상태라면 다음과 같이 진행하실 수 있습니다.

  1. Buffer A 선택:
    • 이미지처럼 입력 칸에 c:\del\emacs\a.txt를 적으셨다면, 해당 파일이 Emacs 버퍼로 열려 있는 상태여야 합니다.
    • 이미 열려있는 파일이라면 그대로 Enter를 누릅니다.
  2. Buffer B 선택:
    • Buffer B to compare: 프롬프트가 나타나면 비교 대상이 될 두 번째 버퍼 이름을 입력하고 Enter를 누릅니다.

3. Ediff 비교 창 기본 조작법

Ediff가 실행되면 화면이 둘로 분할되고 작은 컨트롤 창(Control Panel)이 하나 더 뜹니다.

  • n: 다음 차이점(Next difference)으로 이동
  • p: 이전 차이점(Previous difference)으로 이동
  • a: A 파일의 내용을 B 파일로 복사
  • b: B 파일의 내용을 A 파일로 복사
  • q: 비교 종료 (Quit)

 

 

Windows 환경에서 Emacs의 Ediff 기능은 내부적으로 외부 diff.exe 유틸리티를 호출하여 차이점을 계산

3가지 방법

해결 방법 1: Git for Windows의 diff 이용하기 (가장 추천)

컴퓨터에 Git for Windows가 이미 설치되어 있다면, Git에 포함된 diff.exe 경로를 Emacs 설정에 추가해 주면 바로 해결됩니다.

  1. Emacs 설정 파일(ctrl+x>ctrl+f, ~/.emacs 또는 ~/.emacs.d/init.el)에 아래 코드를 추가합니다.
  2. 코드 스니펫
     
    (setq ediff-diff-program "C:/Program Files/Git/usr/bin/diff.exe")
    
  3. 설정 파일을 수정한 뒤 Emacs를 재시작하거나, M-x eval-buffer를 실행하여 바로 적용합니다.

해결 방법 2: Diff 유틸리티 별도 설치 및 PATH 등록

Git이 설치되어 있지 않다면 Diff 프로그램을 새로 받아 설치해 주는 방법입니다.

  1. GnuWin32 DiffUtils 또는 MSYS2 / Cygwin 등을 통해 Windows용 diff.exe를 다운로드합니다.
  2. 설치 후 diff.exe가 존재하는 경로(예: C:\Program Files (x86)\GnuWin32\bin)를 Windows 시스템 환경 변수(PATH)에 추가합니다.
  3. Emacs를 재시작한 뒤 ediff-files를 다시 실행합니다.

해결 방법 3: Lisp 기반의 smerge 또는 vc-diff 활용 (임시방편)

만약 외부 프로그램 설치 없이 Emacs 내부 Lisp 구현으로 간단히 비교하고 싶다면, Ediff 대신 diff-buffers 명령어를 사용하실 수도 있습니다.

  1. 비교할 두 파일을 버퍼로 열어둡니다.
  2. M-x diff-buffers 실행 후 두 버퍼를 지정합니다.

💡 요약 Windows에서는 Git을 설치한 후 ediff-diff-program 변수에 Git의 diff.exe 경로를 지정하는 것이 가장 신뢰성이 높고 깔끔한 해결책입니다.

728x90