UP | HOME

Emacs

Table of Contents

1.

Emacs가 좋다

vim을 쓰다보면 vim-binding과 유사한 키 스트로크를 채용한 TUI 프로그램을 쓰고 싶은 욕망에 휩싸인다. 그런데 그러한 프로그램들은 독립적인 프로그램이라 vim과 별도로 단축키를 할당해주고 관리해주어야한다.

2. 설정한 작업들

3. 이맥스 배워보기

  1. 플러그인 없이 만들어진 의도대로 써보기
  2. org-mode 써보면서 불편한 점 정리하기
  3. meow에 적응하기

3.1. 플러그인 없이 일단 만들어진 의도대로 써보기

아래 명령어로 터미널에서 아무 설정 없이 실행할 수 있다.

emacs -nw -Q

그 후 M-x help-with-tutorial 하여 튜토리얼을 해본다. 아래의 것들을 배운다:

카테고리 키 바인딩 설명
화면 이동 C-v 다음 화면으로 이동
  M-v 이전 화면으로 이동
  C-l 현재 커서 위치를 화면 중앙으로 이동
  M-< 버퍼의 시작으로 이동
  M-> 버퍼의 끝으로 이동
커서 이동 C-f 한 문자 앞으로
  C-b 한 문자 뒤로
  C-n 다음 줄로
  C-p 이전 줄로
  C-a 줄의 시작으로
  C-e 줄의 끝으로
  M-f 한 단어 앞으로
  M-b 한 단어 뒤로
편집 C-d 커서 위치의 문자 삭제
  M-d 커서 위치부터 단어 끝까지 삭제
  C-k 커서 위치부터 줄 끝까지 삭제
  M-/ 단어 자동 완성
복사/붙여넣기 C-SPC 영역 선택 시작
  C-w 선택 영역 잘라내기(“죽이기”)
  M-w 선택 영역 복사
  C-y 붙여넣기
  M-y C-y 다음에 사용하면 이전 잘라낸 내용 차례로 불러옴
  C-x u 무르기
버퍼 C-x C-b 버퍼 목록 보기
  C-x b 버퍼 전환
  C-x k 현재 버퍼 닫기
  C-x C-f 파일 찾기 (새 버퍼 열기)
  C-x C-s 현재 파일 저장
  C-x s 열린 모든 파일 저장
찾기/바꾸기 C-s 앞으로 찾기
  C-r 뒤로 찾기
  M-% 찾아 바꾸기
  C-M-s 정규표현식으로 찾기
윈도우 C-x 0 현재 윈도우 닫기
  C-x 1 현재 윈도우만 남기고 다른 윈도우 닫기
  C-x 2 윈도우 가로 분할
  C-x 3 윈도우 세로 분할
  C-x o 다른 윈도우로 커서 이동
도움말 C-h 도움말 명령 시작
  C-h c 단축키의 기능 이름 간단히 보기 (describe-key-briefly)
  C-h k 단축키에 대한 자세한 설명 보기 (describe-key)
  C-h f 함수에 대한 설명 보기 (describe-function)
  C-h v 변수에 대한 설명 보기 (describe-variable)
  C-h a 명령어 검색 (apropos)
  C-h i Info 문서 열기
기타 C-g 명령 취소
  M-x 명령어 이름으로 실행
  C-u [숫자] 다음 명령에 인자 전달
  C-x C-c Emacs 종료

3.2. org-mode 써보기

org-mode를 써서 이맥스를 배우며 메모하기.

  • 쓰면서 배운 키들 (익숙해지기 전까지는 종종 봐야함)
  • 쓰면서 불편한 것들 체크해서 나중에 고치기
  • 쓰면서 어떻게 하는지 잘 모르겠는 필요한 기능들 체크하기

일단은 org-mode에 대단한 기능을 기대하지는 않고, 간단한 마크업 정도만 익혀서 쓰는 중.

3.3. 스타트 키트 깔아보기

  • 깔아봤는데 그냥 내가 쓰는 게 낫겠다.
  • 속도 튜닝 같은 거랑 유용한 플러그인만 빼먹고 키맵은 내가 설정하자

4. 이렇게 쓰자

  • 기본 모달 에디팅: meow
    • 근데 이제 helixy하게 config를 바꿔서
    • helix의 키맵은 고민을 많이 해두었다.
  • 언어는 tree-sitter + LSP + REPL
  • SPC 모드
    • SPC p 프로젝트
    • SPC b 버퍼
    • SPC c 코드
    • SPC g 깃
    • SPC s 셸
    • SPC f 찾기 s 심볼 f 파일 이름 / 파일 내용 머 이런 식으루다가
  • SPC SPC 하면 god-mode

5. 미립자 팁

5.1. org-mode에서 meow 숫자 오버레이 보기

org-mode에서 meow 숫자 오버레이를 켠 모습

아래처럼 meow-expand-exclude-mode-list에서 org-mode를 제외해주면 된다.

(use-package meow
│ :demand:after general
│ :config(setq meow-expand-exclude-mode-list '(markdown-mode))
│ │ (meow-setup)
│ │ (meow-global-mode 1))

5.2. org-mode에서 인라인 마크업 뒤에 조사 붙이기

org-mode의 인라인 마크업은 기본적으로 단어 단위이다. 마크업 뒤에는 특수문자만 허용된다. 그래서 아래처럼 조사가 붙는 경우, 강조가 되지 않는다.

│ 이 *부분*은 매우 중요하다

아래를 설정해주면 마크업 뒤에 조사가 붙어도 괜찮다.

(defun nyeong/modify-org-inline-markup-rules ()"인라인 마크업 뒤에 조사를 붙일 수 있도록 허용"
│ │ (setcar org-emphasis-regexp-components " \t('\"{[:multibyte:]")
│ │ (setcar (nthcdr 1 org-emphasis-regexp-components) "[:multibyte:]- \t.,:!?;'\")}\\")
│ │ (org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components))
│ │
│ ;; 위 함수가 org-mode가 불러와진 후 실행되도록 등록(with-eval-after-load 'org
│ │ (nyeong/modify-org-inline-markup-rules))

6. 불편한 점

  • [ ] 버퍼 관리
    • [ ] 현재 열려 있는 버퍼 보기가 불편함 (C-x bC-x C-b 쓰고 있긴 한데 키조합이 외우기 어렵다)
    • [ ] 그냥 C- 바인딩 자체가 home-row-mode 쓰는 게 아니면 불편하다
      • [ ] meow의 SPC(god-mode) 쓰고 있긴 한데, 제일 중요한 SPC키를 내 맘대로 못 쓰니 별로임
  • [ ] 프로젝트 관리
    • [ ] 프로젝트 전환을 어떻게 해야할 지 모르겠음
  • [ ] meow
    • [ ] 줄 처음과 끝에 삽입할 때 한 번에 하기가 불편함 (vim의 I 와 =A)
      • 지금은 C-a, C-e 로 이동 후에 a, i 로 편집하는 중
  • [ ] org-mode
    • [ ] 새 파일 만들 때 레이아웃 자동으로 잡아주면 좋겠음
    • [ ] C-<enter> 누르면 지금 위계에서 새 줄을 추가해주면 좋겠음 (이 줄에서 누르면 리스트 아이템을 추가)

7. 참고

7.1. 튜토리얼

다들 밑바닥부터 시작하지 말고 셋업 쓰라고 난리임:

7.2. 다른 사람의 emacs.d

Author: 안녕

Created: 2024-12-10 Tue 22:08