3 minute read

Emacs에서 프로그래밍하니깐 트리 레이아웃 파일 탐색기가 그리워진다. Visual Studio 같은 IDE(integrated development environment)에서는 기본으로 제공하는 솔루션 탐색기(solution explorer) 같은 탐색기 말이다. Doom Emacs에 Treemacs 파일 탐색기 패키지가 세팅되어 있어서 사용하기 시작했다.

설치

Doom Emacs에서는 init.el 파일에 주석 처리가 되어 있는 treemacs 를 찾아서 주석을 풀고 세팅을 해주면 된다.

(doom! :ui
       (treemacs +lsp))

Doom Emacs를 사용하지 않는다면 Alexander-Miller/treemacs 페이지를 보고 설치하면 된다. MELPA에 등록되어 있으니 use-package로 쉽게 설치할 수 있다.

사용

키바인딩은 Doom Emacs 기준이다.

  • M-x treemacs (SPC o p) - 파일 탐색기를 연다/닫는다
  • M-x treemacs-find-file (SPC o P) - 파일 탐색기를 열고 현재 파일에 포커스를 둔다
  • M-x treemacs-common-helpful-hydra (?) - 도움말
  • M-x treemacs-advanced-helpful-hydra (C-?) - 부가 기능 도움말

SPC o p/P 로 파일 탐색기를 열고 ? 키를 누르면 사용할 수 있는 도움말을 볼 수 있다. abo-abo/hydra 패키지를 사용해 보여주는 도움말이 보기 좋다. 기본 도움말과 부가 기능 도움말을 분리한 것도 좋은 결정이다. 많은 키바인딩을 한 번에 보여줘서 가시성을 떨어뜨리는 걸 막는다.

다음은 열기 메뉴다.

  • M-x treemacs-RET-action (RET) (l) - 열기
  • M-x treemacs-visit-node-vertical-split (o s) - vertical split
  • M-x treemacs-visit-node-horizontal-split (o v) - horizontal split

RET 키로 열어도 되고 l 키로 열어도 된다. l 키는 Vim 이동 키인 hjkl 에서 따온 것 같다. 사이드바는 왼쪽에 있고 오른쪽에 해당 파일을 여니깐 l 키가 말이 된다.

treemacs에 포커스를 유지하고 파일을 빠르게 살펴볼 수 있는 모드를 지원한다.

  • M-x treemacs-peek-mode (P) - Peek 모드 toggle
  • M-x treemacs-next-line-other-window (M-J) - Peek 모드에서 윈도우 스크롤
  • M-x treemacs-previous-line-other-window (M-K) - Peek 모드에서 윈도우 스크롤

프로젝트 컬렉션인 워크스페이스

If you’ve previously used a different explorer like NeoTree or NerdTree - or an earlier version of treemacs for that matter - you are probably used to a display system wherein you see exactly a single file tree whose exact root you can arbitrarily change. This system makes it difficult to work on and switch between multiple projects. Treemacs used to (and still does) remedy that limitation by making every treemacs buffer unique to its frame, but it has now been redesigned to be able to display multiple file trees - projects - at once.

NeoTree나 NerdTree 같은 다른 탐색기나 이전 버전의 Treemacs를 사용해 본 적이 있다면, 정확한 루트를 임의로 변경할 수 있는 단일 파일 트리가 표시되는 디스플레이 시스템에 익숙하실 것입니다. 이 시스템에서는 여러 프로젝트에서 작업하고 전환하기가 어렵습니다. Treemacs는 예전에는 모든 Treemacs 버퍼를 해당 프레임에 고유하게 만들어 이러한 한계를 해결했지만, 이제는 여러 파일 트리(프로젝트)를 한 번에 표시할 수 있도록 재설계되었습니다.

Alexander-Miller/treemacs - github.com

Visual Studio를 다뤄봤다면 여러 프로젝트를 담는 솔루션(solution) 파일이 연상될지도 모르겠다. 단일 프로젝트가 아니라 여러 프로젝트를 워크스페이스로 묶어서 한 번에 보여줄 수 있게 설계했다.

M-x treemacs-edit-workspaces 함수를 호출하면 Org-mode로 된 버퍼를 볼 수 있다.

#+TITLE: Edit Treemacs Workspaces & Projects
# Call ~treemacs-finish-edit~ or press ~C-c C-c~ when done.
# [[https://github.com/Alexander-Miller/treemacs#conveniently-editing-your-projects-and-workspaces][Click here for detailed documentation.]]
# To cancel you can simply kill this buffer.

* Perspective main
** project_a
   - path :: ~/src/project_a
** COMMENT project_b
   - path :: ~/src/project_b

Org-mode 마크업 언어로 세팅을 편집하는 건 처음이다. Emacs에서는 지원이 확실하니 좋은 경험이었다. Org-mode에서 지원하는 코멘트 기능으로 워크스페이스에 안 보여줄 프로젝트를 세팅하는 게 재미있었다.

Projectile을 사용한다면 M-x treemacs-projectile 함수로 projectile로 등록한 프로젝트를 워크스페이스에 손쉽게 추가할 수 있다.

추가 세팅

Doom Emacs에서 follow-mode 를 꺼놔서 나는 켜는 추가 세팅을 했다. 현재 버퍼에 있는 파일을 treemacs 버퍼에서 포커싱하는 기능이다.

(after! treemacs
  (treemacs-follow-mode t))

마치며

현재 내게 Emacs는 Elixir 메인 프로그래밍 에디터이다. Elixir 프로그래밍을 할 때 SPC o p 키를 눌러 treemacs 사이드바를 열어 놓고 시작한다. 여러 프로젝트를 한 번에 보여주고 전환을 쉽게 할 수 있는 워크스페이스는 아직 잘 활용하고 있진 않다.

C-x C-s C-x C-c

링크