Emacs에 더 많은 배터리가 기본 포함됨
(karthinks.com)- Emacs 기본 기능에는 별도 패키지 없이 쓸 수 있지만 잘 드러나지 않는 도구가 많으며, 현대 Emacs 28.1+에서도 5분 안에 배울 만한 실용 기능이 계속 발견됨
- 파일 열기·URL 수집·비교·변경 추적 같은 일상 작업은
find-file,dired,ffap-menu,compare-windows,highlight-changes-mode만으로도 상당 부분 처리 가능함 - 백업 파일과 버전 관리 파일은
vc-diff계열 명령을 확장하면 이전 버전과 비교라는 하나의 작업 모델로 묶을 수 있음 - 편집·탐색·표시 작업은
apropos계열,find-function-on-key,kmacro-edit-lossage,subword-mode, 이미지 조작 키맵처럼 이미 포함된 기능으로 빠르게 개선됨 - 핵심 takeaway는 Emacs의
lisp디렉터리가 크지 않아도 기본 내장 기능만으로 작업 흐름을 넓힐 여지가 계속 남아 있다는 점임
개요와 범위
- Emacs 기능은 발견 가능성 문제가 있으며, 이 글은 잘 알려지지 않았지만 유용한 내장 기능을 하나씩 보여주는 방식으로 그 문제를 줄이려는 시도임
- 이번 글은 Emacs에 기본 포함된 유용하지만 덜 알려진 기능을 다루는 세 번째 글임
- “덜 알려짐”은 주관적 판단이며, 지난 20년간 온라인 Emacs 담론을 드나들며 해당 기능이 다섯 번 미만으로 언급됐거나 전혀 보지 못한 경우를 대략 뜻함
- 새 Emacs 사용자는 여기서 시작하지 않는 편이 좋으며, 기본 개념과 널리 추천되는 패키지에 익숙해진 뒤 이 목록이 더 유용해짐
- 기준은 패키지 없이 순정 Emacs만 사용하고, 가파른 학습 곡선이 없으며, 장난성 기능과 흔히 언급되는 기능을 제외하고, 현대 Emacs 28.1+를 전제로 함
마우스오버 사전: M-x dictionary-tooltip-mode
dictionary-tooltip-mode를 켜면 단어 위에 마우스를 올렸을 때 툴팁으로 뜻을 볼 수 있음tooltip-mode도 켜져 있어야 하지만 기본값으로 활성화되어 있음- 로컬 사전이 설정되어 있으면 먼저 사용하며, Emacs 사전은 보통 Wiktionary를 통해 현대 용어와 은어도 찾을 수 있음
find-file과 dired의 와일드카드
find-file과dired를 대화형으로 사용할 때도 와일드카드를 쓸 수 있음find-file에서*foo*.txt같은 패턴을 사용하면 여러 파일을 한 번에 열 수 있음- Dired에서 디렉터리를 열 때 파일명 와일드카드를 지정하면 특정 파일만 모은 맞춤 목록을 만들 수 있음
- 예시 흐름은
*/*_region_*패턴으로 하위 디렉터리의 AucTeX 임시 파일을 찾고, Dired에서 선택한 뒤 삭제하고, 다시 와일드카드로 하위 디렉터리의 TeX 파일 여러 개를 여는 방식임 - 이 기능은 함수 시그니처상 프로그래밍 호출에서는 드러나지만, 대화형 사용에서도 가능하다는 점은 전체 docstring을 읽어야 알기 쉬움
- Dired 와일드카드 기능은
consult-find와embark-export로 만든 현대적 Dired 흐름에 밀릴 수 있지만, 기본 상태에서 바로 작동함
버퍼 안의 URI 목록: M-x ffap-menu
ffap는 커서 위치가 유효한 파일 경로나 URL인지 확인해 열 수 있게 하는 find-file-at-point 기능임ffap-menu는 버퍼 전체를 훑어 파일 경로나 URL처럼 보이는 항목을 찾아 목록으로 제공함completing-read인터페이스를 쓰기 때문에 필터링한 후보 목록을 버퍼로 내보내거나, 일부 또는 전체를 복사·열기·Embark로 처리할 수 있음-
속성이 붙은 링크 목록화
- EWW 같은 Emacs 애플리케이션은 URL을 일반 텍스트 링크가 아니라 텍스트 속성으로 넣는 경우가 있으며,
ffap-menu는 이를 놓침 - 이를 보완하려면
ffap-menu에서 착안한 사용자 정의 명령으로shr-url텍스트 속성까지 수집할 수 있음 - 예시 명령
my/search-occur-browse-url은 일반 URL 정규식과shr-url속성을 모두 찾아 완성 후보로 만들고, 선택한 URL을browse-url또는browse-url-generic으로 열도록 구성됨
- EWW 같은 Emacs 애플리케이션은 URL을 일반 텍스트 링크가 아니라 텍스트 속성으로 넣는 경우가 있으며,
창 비교: M-x compare-windows
- Emacs에는
diff,diff-buffers,diff-backup,dired-diff,vc-diff, 여러ediff-*명령처럼 비교 명령이 많음 compare-windows는 두 창의 커서 위치부터 텍스트를 비교하고, 다음 불일치 지점에서 멈춘 뒤 이를 보고함- 비교 대상은 활성 창과
other-window가 선택할 창이며, Ediff나 diff보다 기능은 적지만 실행이 더 쉽고 빠름 - 버퍼 종류, 수정 상태, 파일, 버전 관리 상태와 무관하게 두 창에 보이는 실제 텍스트만 비교함
- 같은 버퍼의 다른 부분을 두 창에 표시하면 같은 버퍼 안의 두 텍스트 조각도 비교할 수 있음
- 디렉터리 목록도 비교할 수 있으며, 예시에서는 파일 수정 시간이 첫 불일치로 잡힘
- 접두 인수를 주면 공백 차이를 무시할 수 있음
Dired로 디렉터리 비교: M-x dired-compare-directories
dired-compare-directories는 Dired에서 비교할 디렉터리를 묻고, 두 Dired 목록에서 이름이 다른 파일을 표시함- 이 방식은 가장 흔한 디렉터리 비교 사용 사례를 처리할 수 있음
- 파일 수준 비교이므로 수정 시간이나 크기 같은 파일 속성을 포함한 사용자 지정 매칭 조건을 줄 수 있음
(> mtime2 mtime1)조건은 더 최근에 수정된 파일을 표시할 수 있음(/= size1 size2)조건은 이름은 같지만 크기가 다른 파일을 표시할 수 있음- 더 상호작용적인 비교가 필요하면
ediff-directories도 사용할 수 있음
버퍼 변경 강조: M-x highlight-changes-mode
highlight-changes-mode는 파일 변경 지점을 강조하는 기능이며,diff-buffer-with-file같은 diff 명령의 “라이브” 대안으로 쓸 수 있음- 기본 동작은 모드가 켜진 시점부터 꺼질 때까지의 변경을 강조하며, 저장되지 않은 변경만 자동으로 강조하는 방식은 아님
before-save-hook과after-save-hook을 사용하면 저장 전에는 강조를 끄고 저장 후 다시 켜는 방식으로, 저장 전 변경만 강조하는 흐름을 만들 수 있음- 예시 코드는
text-mode-hook에서 파일 버퍼에highlight-changes-mode를 켜고, 저장 전후 훅으로 강조 상태를 조정함 - 독립적인
highlight-unsaved-mode형태로 만들면 저장할 때까지 모든 변경을 강조하는 마이너 모드가 됨 highlight-changes-next-change와highlight-changes-previous-change로 다음·이전 변경 지점으로 이동할 수 있음highlight-changes-remove-highlight로 시각적 강조는 제거하고 변경 추적 기반 이동만 사용할 수 있음
백업 파일을 실제로 유용하게 쓰기: vc-diff 계열
-
Emacs 백업의 문제
- Emacs는 기본적으로 편집하고 저장하는 파일의 백업을 주기적으로 만듦
- 이 백업 시스템은 보통
make-backup-files로 꺼야 할 귀찮은 기능으로 언급됨 - 민감한 파일이 디스크 다른 곳에 복사되는 보안 우려가 있을 수 있음
- 그 외의 경우 문제는 주로 작업 디렉터리에 백업이 흩어지고, 백업 파일을 살펴보거나 다루기 쉬운 UI가 부족하다는 점임
backup-directory-alist,kept-old-versions,kept-new-versions같은 사용자 옵션으로 백업 위치와 보관 수를 조정할 수 있음- 외부 패키지
backup-walker는 백업을 시간 여행처럼 탐색하는 인터페이스를 제공함
-
VC 인터페이스 확장
- Emacs 내장 VC 패키지는 버전 관리 파일의 과거 버전을 보기 위한 인터페이스를 제공함
vc-diff는 파일을 직전 버전 또는 지정 버전과 diff함vc-ediff는 파일의 직전 버전 또는 지정 버전과 Ediff를 실행함vc-revision-other-window는 직전 또는 지정한 과거 버전을 현재 파일 옆에 표시함- 이 인터페이스는 Git에 한정되지 않지만, 버전 관리되지 않는 파일에서는 동작하지 않음
- 세 VC 명령을 오버로드하면 저장되지 않은 버퍼, 버전 관리 파일, 버전 관리되지 않는 파일 백업을 모두 “이전 버전과 비교”라는 모델로 묶을 수 있음
- 저장되지 않은 파일에서는
vc-diff와vc-ediff가 버퍼와 파일을 비교함 - 버전 관리 파일에서는 원래
vc-diff,vc-ediff,vc-revision-other-window가 그대로 실행됨 - 버전 관리되지 않는 파일에서는 최신 번호 백업이나 접두 인수로 고른 번호 백업과 비교하거나 표시함
apropos 계열
describe-key인C-h k는 키 입력이 호출하는 함수를 직접 확인할 수 있어 매우 유용한 도움말 키임- 두 번째로 배울 도움말 기능으로는
apropos가 강력하며, 무엇을 찾아야 할지 모를 때 Emacs 기능 배치를 파악하는 입구가 됨 apropos는 하나의 명령만이 아니라apropos-library,apropos-function,apropos-command,apropos-variable,apropos-user-option,apropos-documentation,info-apropos등 여러 전문 검색 명령의 가족임- 예시 설정은 이 명령들을
C-h a아래 키맵에 묶어apropos를 대체함 which-key같은 프롬프터가 없더라도 접두키C-h a뒤에C-h를 누르면 사용 가능한 명령 목록을 볼 수 있음customize-apropos는 검색어와 일치하는 옵션, 페이스, 그룹을 모아 맞춤형 customize 버퍼를 만들어 줌
find-func 도구: M-x find-function-on-key, M-x find-function
- 키바인딩이 마음에 들지 않거나 동작을 알고 싶을 때, 그 키가 호출하는 명령의 정의로 이동하면 동작을 읽거나 수정할 수 있음
- 일반 흐름은
describe-key또는C-h k로 키가 호출하는 명령을 확인한 뒤,s를 눌러 소스로 이동하는 방식임 find-function-on-key는 이 두 번째 단계를 줄여 키바인딩에서 함수 소스로 바로 이동함- 예시 설정은
help-map에서C-h M-k를find-function-on-key에 바인딩함
copy-from-above-command와 duplicate-dwim
- Emacs에는 최근 여러 사용자가 오래전부터 쓰던 텍스트 복제 명령이 추가됨
copy-from-above-command는 현재 줄 위의 첫 비어 있지 않은 줄에서 텍스트를 복사하며, Vim의C-y와 비슷함duplicate-dwim은 현재 줄 또는 활성 영역을 현재 줄 아래에 복사하며, Vim의yy<N>p와 비슷함copy-from-above-command는 접두 인수만큼 위 줄에서 문자를 복사하지만, 예시 advice는C-u접두 인수를 “위 줄 전체를 복사하고 주석 처리”하는 동작으로 바꿈- 숫자 접두 인수
C-<N>를 쓰면 기존처럼 위에서 정해진 수의 문자를 복사할 수 있음 duplicate-dwim은 복제 후 커서를 원본에 둘지 복제본에 둘지 선택해야 하며, 사용자 옵션으로 이를 정할 수 있음- 예시 설정은
duplicate-region-final-position과duplicate-line-final-position을-1로 두어 커서와 영역이 복제된 텍스트로 이동하게 함
키 입력 기록을 매크로로 만들기: M-x kmacro-edit-lossage
- Emacs 키보드 매크로는 텍스트 변환뿐 아니라 마우스 클릭을 포함한 Emacs의 모든 동작 시퀀스를 캡처하고 재생할 수 있음
- 키보드 매크로는 강력하지만, 기록 시작 전에 반복 가능성을 예상해야 하고 오류 없는 일반화된 동작을 수행해야 해 인지 부담이 큼
- Vim의
.명령과 Emacs의dot-mode패키지는 편집 반복 문제를 완화하지만, 완전한 키보드 매크로와는 범위가 다름 view-lossage(C-h l)는 최근 약 300개 키 입력 기록을 보여줌kmacro-edit-lossage는 이 키 입력 기록에서 언제든 매크로를 만들 수 있게 함- lossage는 실제로 편집 가능하므로, 매크로를 만들 때 새 명령을 기록 안에 넣을 수 있음
- 이미 정의한 매크로는
edit-kbd-macro(C-x C-k e)로 더 자주 편집할 수 있지만,kmacro-edit-lossage는 드문 상황에서 방금 한 복잡한 작업을 반복 가능하게 만드는 데 유용함 - 일반화 가능한 매크로를 만들려면
kbd-macro-query호출을 lossage에 넣어야 하는 경우가 많음
subword-mode, superword-mode, 단어 문법
- Emacs의 단어 기반 이동·편집 명령은 major mode별 syntax table을 사용하며, 무엇을 단어로 볼지는 사용자가 조정할 수 있음
subword-mode에서는 CamelCase 기호의 각 구성요소가 단어로 취급됨- 예시로
GtkWindow는Gtk와Window,EmacsFrameClass는Emacs,Frame,Class,NSGraphicsContext는NS,Graphics,Context로 나뉨 superword-mode에서는this_is_a_symbol같은 snake_case 기호가 하나의 단어로 취급됨- 실제 사용에서는
*-sexp명령으로 심벌 조작이 이미 잘 지원되므로superword-mode는subword-mode보다 덜 유용함 - major mode의 syntax table을 몇 분만 수정해도 구조적 이동에서 겪는 불편을 줄일 수 있음
- Lisp 계열 맥락에서는
:를 단어 구성 문자로 만들면:foo같은 키워드를backward-kill-word로 처리하기 쉬움 - Org mode에서는
=와~구분자를 단어 구성 문자로 다루도록 바꿀 수 있음 - 문자 문법 지정 방식은
describe-syntax(C-h s)와modify-syntax-entry에서 확인할 수 있음
이미지 표시 조작
- Emacs가 이미지를 표시하는 거의 모든 곳에서 이미지 위에 커서를 두고
i를 누르면 표시를 조작할 수 있음 - Org mode 이미지 링크 미리보기와 Elfeed 항목 버퍼의 이미지에서도 같은 조작을 사용할 수 있음
i +와i -는 확대·축소에 유용하며,i r은 이미지를 90도 회전함i c로 이미지를 자를 수도 있으며, 자세한 키는M-x describe-keymap RET image-map에서 볼 수 있음- 브라우저와 다른 애플리케이션에서 익숙한
C-<wheel>단축키도 사용할 수 있음 repeat-mode를 쓰면 첫 호출 뒤에는i접두 없이+,-,r만 반복할 수 있음- 이 기능은 이미지 위에 놓인 키맵으로 제공되며 별도 활성화가 필요 없음
- 조작되는 것은 디스크의 이미지 파일이 아니라 표시 상태뿐임
- 웹페이지와 렌더링된 HTML 버퍼에서는
z(shr-zoom-image)가 이미지를 여러 줄의 가로 조각으로 나누고 크기를 순환시켜 큰 이미지 표시 한계를 완화함
모든 텍스트 보이기: M-x visible-mode
- Emacs는 버퍼 텍스트를 선택적으로 보이지 않게 만들 수 있으며, 이 기능이 Magit section, Outline mode, Org mode 같은 접기 동작의 기반임
- 접기 기능을 제공하는 모드는 보통 접기 상태를 바꾸는 키바인딩을 제공하고,
TAB이 대체로 동작함 - 모드별 키바인딩을 익히기 어렵거나 충분히 자주 쓰지 않는 경우
visible-mode로 숨겨진 텍스트를 모두 볼 수 있음 visible-mode는 버퍼 전체의 텍스트 비가시성을 비활성화하고, 다시 실행하면 이전 비가시성 상태를 복원함- 동적 접기 UI가 있는 버퍼에서는
visible-mode가 켜진 동안 화면이 깨져 보일 수 있음 - 이 기능은 임시 조치나 디버깅 도구에 가깝지만, 한 명령으로 버퍼의 모든 텍스트를 균일하게 드러낼 수 있음
보이지 않는 텍스트 무시: isearch-toggle-invisible
- Isearch 같은 일부 Emacs 명령은 기본적으로 텍스트 비가시성을 무시해 실제 문서 전체를 쉽게 검색할 수 있음
- 보이는 버퍼 상태가 탐색 안내 역할을 할 때는 접힌 텍스트를 자동으로 드러내는 검색이 예상과 다르게 동작할 수 있음
- Isearch를 검색보다 탐색 도구로 사용할 때 접힌 영역의 매치로 이동하면 문제가 됨
- Isearch 중
M-s i에 바인딩된isearch-toggle-invisible로 보이지 않는 텍스트 검색 여부를 전환할 수 있음 - 예시에서는 Org 문서의 마지막 제목으로 이동하려고
zero를 검색했지만 접힌 영역의 매치로 건너뛰고, 다시 검색하면서M-s i를 눌러 보이는 텍스트 안의 매치로만 이동함 - Isearch 동작 전환 키들은
C-s기본 바인딩과 대응되는M-s키맵 아래에 있음
눈금자: M-x ruler-mode
- Emacs에는 과거 WYSIWYG 워드프로세싱 기능의 흔적으로
center-*명령과 같은 기능이 남아 있음 center-*명령은 줄, 문단, 영역을fill-column기준으로 가운데 정렬하며, 코드의 장식성 주석 같은 용도에 쓸 수 있음- 표시 margin과 fringe 폭은 많은 기능을 넣을 수 있는 화면 공간이지만, 표시 margin 폭을 직접 바꾸는 작업은 간단하지 않음
set-left-margin과set-right-margin은 표시 margin 폭을 바꾸는 명령이 아니라 실제 버퍼 텍스트를 들여쓰는center류 명령처럼 동작함- 표시 margin 설정은 직접 명령이 없고, 창이 다시 표시될 때까지 효과가 적용되지 않는 문제가 있음
ruler-mode를 켜면 header-line 위 툴팁으로 사용법을 볼 수 있음S-<mouse-1>와S-<mouse-3>로 버퍼의 왼쪽·오른쪽 margin을 설정할 수 있음<mouse-2>드래그로fill-column도 설정할 수 있음- 프리셋 폭을 토글하기보다 즉석에서 margin을 바꾸고 싶다면
visual-fill-column이나olivetti같은 패키지보다ruler-mode가 더 사용자 친화적일 수 있음
텍스트 다시 채우기: M-x refill-mode
- Emacs는 텍스트를 채우기 위한 여러
fill-*명령과 입력 중 줄바꿈을 처리하는auto-fill-mode를 제공함 auto-fill-mode는 Emacs 튜토리얼에서 초반에 다뤄질 만큼 텍스트 채우기를 중요한 편집 기능으로 취급함auto-fill-mode는 실제로 완전 자동이 아니며, 현재 줄만 감싸고 붙여넣기 등으로 생긴 이전 문단의 어긋남은 수동으로 고쳐야 함refill-mode는 문서가fill-column에 맞춰 유지되도록 하는 Emacs의 실제 자동 텍스트 채우기 기능임M-x refill-mode를 실행하면 해당 동작을 사용할 수 있음
모든 창 함께 스크롤: M-x scroll-all-mode
scroll-other-window는 선택되지 않은 다른 창을 전환 없이 스크롤할 수 있게 하며, 현재 창에서 작업하면서 다음 창의 참고 자료를 볼 때 유용함follow-mode는 하나의 버퍼를 여러 창에 걸쳐 연속적으로 보는 기능임scroll-all-mode는 덜 알려져 있지만, 프레임의 모든 창을 동시에 스크롤함- 서로 동기화해 봐야 하는 버퍼를 살펴볼 때 유용하며, 예시에서는 Ediff 세션에 들어가지 않고 파일 두 버전을 눈으로 비교하는 데 사용됨
- 예시 흐름은 현재 파일의 특정 이전 백업을
vc-revision-other-window로 열고,scroll-all-mode를 켠 뒤, 평소처럼 스크롤하면 모든 창이 동시에 움직이는 방식임 -
다른 창 스크롤과
master-mode- 화면에 창이 둘보다 많고 스크롤하려는 창이 Emacs가 고르는
next-window가 아닐 때 문제가 생길 수 있음 - 내장
master-mode는 다른 버퍼에서 스크롤할 수 있는 버퍼를 미리 지정하거나 즉석에서 지정할 수 있게 함 - 더 즉각적인 방법은 스크롤할 창을 찾는 전략을 설정하는 것임
(setq other-window-scroll-default #'get-lru-window)는 항상 가장 오래 사용하지 않은 창을 스크롤함- 참고 자료가 들어 있고 거의 선택하지 않을 창을 스크롤할 때 이 방식이 유용함
- 자주 편집하는 두 창이 여러 창 중에 있다면 가장 최근 사용한 창을 다른 창으로 스크롤하도록 람다 함수를 설정할 수 있음
- 이런 설정 조합은
scroll-other-window가 의도한 창을 스크롤하도록 만드는 데 도움이 됨
- 화면에 창이 둘보다 많고 스크롤하려는 창이 Emacs가 고르는
종료 거부: M-x emacs-lock-mode
- 저장되지 않은 파일이 있을 때 Emacs는 각 파일을 어떻게 처리할지 답할 때까지 종료를 거부함
emacs-lock-mode는 이 아이디어를 확장해 사용자가 임의의 버퍼를 잠글 수 있게 함- 잠금이 해제되기 전까지 해당 버퍼는 kill을 거부하고
Buffer "*scratch*" is locked and cannot be killed같은 메시지를 냄 - 잠긴 버퍼가 있으면 Emacs도 종료를 거부하고
Emacs cannot exit because buffer "*scratch*" is locked같은 메시지를 냄 - 파일을 방문하지 않는 버퍼에 담긴 정보를 실수로 잃지 않거나, 해당 버퍼의 작업이 남아 있음을 상기하는 데 유용함
- Org-capture 이후 전자의 문제는 드물지만, shell·compilation 버퍼, 웹사이트, 다른 특수 애플리케이션의 출력이나 상태를 잃지 않는 용도로 여전히 유용함
프레임 되살리기: M-x undelete-frame-mode, M-x undelete-frame
- 정성껏 구성한 Emacs 프레임을 실수로 닫았을 때
undelete-frame으로 되살릴 수 있음 - 이 기능을 쓰려면
undelete-frame-mode가 켜져 있어야 함 - 내장
winner와tab-bar-history가 창에 대해 제공하는 기능을 프레임 대상으로 수행함 undelete-frame-mode를 Emacs와 함께 켜두면 프레임을 닫는 일을 덜 걱정할 수 있음- 삭제된 프레임은 최대 16개까지 복원할 수 있음
남은 기능과 제외된 기능
- 지난 6년 동안 마주친 기능 중 2026년 Emacs 사용 현실에서 살아남은 기능은 20개임
- 우연히 발견한 여러 Emacs 라이브러리는 일반 사용자 요구에 대한 안정적 해결책보다 고고학적 흥미가 더 컸음
allout-mode는 Org mode와 비슷한 평행세계의 outline 관리자이며, Org의 speed-key와 서브트리별 암호화 같은 기능을 갖고 있음shadowfile은 Emacs 안에서unison을 구현하지만 효용이 의문임double-mode는quail보다 앞선, 키 변환 기반의 비키보드 문자 입력 방식임bs라이브러리는 더 똑똑한list-buffers명령을 만들려던 시도였지만,ibuffer가 더 나아 사용할 이유가 없어짐electric-pair-mode로 영역을 구분자로 감싸는 기능처럼 표면상 유용한 기능도 까다로움 대비 효용이 낮아 제외됨- 이런 용도에는
wrap-region,smartparens,embrace같은 외부 패키지가 더 나음 appt같은 Org 및 Org 인접 내장 라이브러리는 흥미롭지만 별도 글에서 다룰 만큼 범위가 큼thunk처럼 Elisp 개발자에게 주로 유용한 라이브러리도 별도 정리가 필요함- Emacs와 함께 제공되는
lisp디렉터리는 그리 크지 않지만, 유용한 기본 기능은 계속 발견될 여지가 있음
댓글과 토론
Lobste.rs 의견들
-
find-file(C-x C-f)에서*foo*.txt처럼 와일드카드로 여러 파일을 여는 건 대개 실수라서, 와일드카드를 쓰면find-file이 곧바로dired를 띄우도록find-file-noselect에advice-add를 걸어둠
file-expand-wildcards결과가 2개 이상일 때dired-noselect로 넘기고, 아니면 원래find-file-noselect를 호출하는 방식임 -
ruler-mode가 정말 재미있음. Emacs에 이런 WYSIWYG 기능이 있는 줄 전혀 몰랐고, Emacs는 참 특이하면서도 즐거운 소프트웨어임 -
평범한 Emacs만 쓰면서 거의 다 살펴봤다고 생각했는데, 아직 발견할 게 훨씬 많았음.
ruler-mode는 글쓰기용으로 꽤 멋짐- 이런 기능들이 Emacs 자체에 들어 있다는 게 놀라움. Emacs가 이런 걸 만들 수 있는 elisp API만 제공한다고 생각하기 쉬운데, 기본 도구를 많이 놓치고 있었음
예전엔 Magit을 훨씬 많이 썼지만 지금은 내장vc-mode와diff도구로 옮겼고, 둘 다 아주 잘 동작해서 만족스럽다
- 이런 기능들이 Emacs 자체에 들어 있다는 게 놀라움. Emacs가 이런 걸 만들 수 있는 elisp API만 제공한다고 생각하기 쉬운데, 기본 도구를 많이 놓치고 있었음
-
이런 글이 좋음. Emacs나 Neovim처럼 복잡하고 커스터마이즈 가능한 편집기를 쓸 때, 기본 편집기가 무엇을 할 수 있는지 이해하기 전에 비대한 배포판부터 설치하고 너무 빨리 달리려는 경우가 많음
시간이 있다면 매뉴얼을 읽고 처음부터 직접 설정을 쌓아가는 과정이 꽤 보람 있음. 잘 안 알려진 Emacs 함수로finder-list-keywords가 있는데, 실행하면 찾기 어려운 Emacs 기능을 탐색할 수 있는 메뉴가 나온다. 예를 들어 내장 게임이 24개나 있다는 걸 알고 있었나?