Doom Emacs 단축키 정리

Emacs // 2024년 07월 29일 작성 // 2024년 08월 05일 업데이트

이 글은 Doom Emacs에서 개인적으로 자주 사용하는 혹은 인상적이지만 잘 까먹는 단축키를 정리한다. 일부 단축키는 별도의 글로 분리하는 경우도 있으니 하단 관련글 항목을 참고하자.

설정(Configuration) 관련

단축키 설명 기타
SPC f p 설정 파일 열기(즉 ~/.doom.d에 있는 파일들 목록이 뜬다)
SPC h r r 설정 싱크(sync) 및 리로드(doom/reload)

파일, 프로젝트, 워크스페이스 관련

단축키 설명 기타
SPC f f 파일 열기 find-file
SPC . 현재 디렉토리에서 파일 열기 생성하기도 가능
SPC p p 프로젝트 전환 워크스페이스가 없으면 생성
SPC SPC 프로젝트 파일 열기
SPC TAB . 워크스페이스(프로젝트) 목록 및 전환
SPC TAB NUM NUM 숫자에 해당하는 워크스페이스로 전환
COMMAND NUM NUM 숫자에 해당하는 워크스페이스로 전환 Mac 전용

버퍼(Buffer) 관련

단축키 설명 기타
SPC , 워크스페이스(혹은 프로젝트) 버퍼 전환
SPC b b 워크스페이스(혹은 프로젝트) 버퍼 전환
SPC ` 동일 워크스페이스의 이전 버퍼로 전환
SPC b B 버퍼 전환
SPC b p 이전 버퍼로 전환
SPC b n 다음 버퍼로 전환
SPC p x 스크래치 버퍼를 작게 아래쪽에 띄우기

창(Window)

참고로 Emacs에서 창(window)이란 하나의 윈도를 여러 pane으로 분할해서 쓰는 것을 의미하니 용어에 주의하자.

단축키 설명 기타
SPC w s 창을 위아래로 나누기
SPC w v 창을 좌우로 나누기
SPC w w 다음 창으로 포커스(커서) 이동
SPC w c 혹은 SPC w d 창 닫기. 창이 하나 뿐이면 프로젝트 단기
SPC w j 혹은 SPC w k 아래쪽 창 혹은 윗쪽 창으로 이동하기
SPC w h 혹은 SPC w l 왼쪽 창 혹은 오른쪽쪽 창으로 이동하기
SPC w o 하나의 창을 많이 크게 만들기
SPC w C-o 현재 창만 남기고 다른 창 닫기
SPC w = 모든 창의 크기를 비슷하게 맞추기
C-w C-w 혹은 C-x o 지정된 캐릭터의 윈도로 스위칭 ace-window

창 이동은 Evil을 쓸 경우 C-wh, j, k, l을 조합하는 Vim 방식을 동일하게 사용할 수도 있다.

폴딩(Folding)

단축키 설명 기타
z f 선택 영역 접기(폴딩)
z a 폴딩 토글하기
z d 폴딩 제거하기 코드 삭제 아님
z E 모든 폴딩 제거
z j 다음 폴딩으로 이동
z k 이전 폴딩으로 이동

셸(Shell) 혹은 터미널(Terminal)

단축키 설명 기타
SPC o t 터미널 열기

템플릿(Snippets)

단축키 설명 기타
SPC s / 스니펫 목록 및 검색하기

검색(Search)

단축키 설명 기타
SPC s p 프로젝트에서 검색(search in project)
SPC s d 디렉터리에서 검색(search in directory)
C-c C-o 검색 내용 버퍼를 별도의 창에 띄우기
SPC ' 계속 검색 ivy-resume

점프(Jump)

단축키 설명 기타
t [character] 해당 문자로 점프 evil-snipe
s [characters] 문자 완성 형식으로 해당 문자열로 점프 evil-snipe
S [characters] 문자 완성 형식으로 해당 문자열로 역방향 점프 evil-snipe
g s j 표시된 문자를 입력한 위치로 아래방향 점프 evil-easymotion
g s k 표시된 문자를 입력한 위치로 아래방향 점프 evil-easymotion
g s SPC 키보드로 입력하는 글자 위치로 점프 avy

멀티 커서(Multiple Cursors) - evil-multiedit

단축키 설명 기타
M-d 현재 커서 위치의 단어 혹은 선택영역 선택 혹은 아래 방향으로 같은 단어를 하나 검색해서 선택
M-D 현재 커서 위치의 단어 혹은 선택영역 선택 혹은 윗쪽 방향으로 같은 단어를 하나 검색해서 선택
영역 선택 후 R 해당 단어 모두 선택
R 선택된 단어들을 덮어쓰기(Replace) 모드로 몽땅 편집하기
I 선택된 단어들을 삽입(Insert) 모드로 몽땅 편집하기
D 선택된 단어들을 삭제하기
C-n 선택중인 다음 단어들로 점프
C-p 선택중인 이전 단어들로 점프
RET 선택 영역 토글
ESC 탈출(Exit evil-multiedit mode)

멀티 커서(Multiple Cursors) - evil-mc

단축키 설명 기타
g z z 현재 위치에 커서 만들기
g z j 현재 커서 위치에서 서브커서를 만들고 아래로 이동 (g z k 는 위로)
g z m 현재 커서 위치와 관련이 있는 모든 곳에 서브커서 생성
g z d 현재 커서의 단어 끝에 서브커서를 만들고 비슷한 다음 단어로 커서 이동
g z D 현재 커서의 단어 끝에 서브커서를 만들고 비슷한 이전 단어로 커서 이동

특수 텍스트 변환

단축키 설명 기타
! 연관 텍스트로 변환 rotate-text

연관 텍스트라는 것은 좀 특수한 경우인데, 예를 들어 C++에서 public - private - protected 등의 관계를 생각하면 될 것 같다.

Emacs Lisp 관련

단축키 설명 기타
SPC : 함수 실행하기(Emacs 의 M-x 와 동일). 콜론 주의.
SPC ; 명령 실행하기(eval expression). 세미콜론임에 주의
SPC m e r Lisp Mode에서 선택 영역 실행하기(eval region).
SPC m e b Lisp Mode에서 버퍼 전체 실행하기(eval buffer).
S b 선택 영역을 괄호(braces)로 둘러싸기
z M 모든 헤드라인 폴딩
z R 모든 헤드라인 폴딩 열기

프로그래밍 관련

단축키 설명 기타
g c 영역을 주석처리(comment) 혹은 주석해제(uncomment) (Vim 스타일)
SPC a ; 영역을 주석처리(comment) 혹은 주석해제(uncomment) (Doom Emacs 스타일)
SPC c d 레퍼런스로 이동(Look up reference)
= 선택영역 들여쓰기(indentation) 정리 (Vim 스타일)
]e Next Error
[e Previous Error
SPC c x List Errors

Org Mode 공통

단축키 설명 기타
SPC m t TODO 마크
SPC m p 우선순위(priority)
SPC n s 노트(org) 검색
SPC n r f Org Roam 문서 제목으로 파일 열기

Org Mode 테이블 스프레드시트

단축키 설명 기타
SPC m b h 테이블에서 커서 위치의 필드 정보 org-table-field-info
C-c } 테이블 필드 정보 오버레이 토글 org-table-toggle-coordinate-overlays

프로파일러(profiler)

단축키 설명 기타
SPC h T Toggle Profiler

관련된 글들