Emacs 2주 삽질기

박규현·2020년 11월 2일
1

2019-02-14 워드프레스 블로그에 작성.
2020-11-02 Velog로 복사.

결론

Emacs 를 2주간 사용해 보고 그만 둔 이야기입니다.

Emacs 는

오늘은 2019년 2월 13일입니다. 이맥스는 1976년부터 나오기 시작했습니다. 그러니까 40살이 넘은 프로그램입니다. 지금도 꾸준히 업데이트 되고 있습니다.

https://www.gnu.org/software/emacs/history.html

구성은 Lisp 인터프리터 + Lisp 라이브러리 + 에디터 코드 조합으로 되어 있습니다. 단순한 에디터라기 보다는 Lisp 플랫폼이라고 보는 것이 맞습니다.

사용율

https://insights.stackoverflow.com/survey/2018

2018년 스택오버플로우 설문조사입니다. 이맥스 사용자가 많지는 않습니다. 관리자, 수학/통계 분야게서 많이 사용되어서 4.1%로 집게된 것입니다. 웹 개발자나 모바일 개발자들 기준으로 보면 더 낮아집니다. 한국 설문 조사에서는 사용자가 거의 나타나지 않습니다.

사용율이 낮은 이유

각 시대에는 그 시대의 에디터가 있습니다. 그 시대의 사람들이 그 시대의 언어로 만듭니다. 그 시대의 스타일과 요구 사항을 반영합니다.

C -> Vim
Objective-C -> Xcode
C++ -> Visual Studio
Java -> Eclipse/Intellij
JavaScript -> Visual Studio Code

Emacs 는 Lisp 시대에 태어난 에디터입니다. Lisp 인터프리터를 내장하고 있습니다. Emacs 코드 95% 이상이 리스프로 만들어져 있습니다. 당연히 리스프 코딩에 최적화되어 있습니다. 나머지 5%는 C 입니다.

많은 사람들이 Emacs 에 Lisp 확장 기능을 코딩해 넣었습니다. Lisp 인들은 우리가 지금 당연하게 사용하고 있는 것들을 Emacs 위에서 만들어 썼습니다. 텍스트 브라우저, 메일 리더, 계산기, 터미널, 게임까지.

요즘은 상황이 조금 달라졌습니다. 각 어플리케이션의 기능이 많이 복잡해 졌습니다. Lisp 머신만 가지고 이 모든 것을 구현하기는 어려움이 있습니다. 제품 유통, 수익적인 측면, 정치적인 문제도 끼어듭니다.

플랫폼 독점 적인 것들, 플랫폼 중립적인 것들. 여러 정치 싸움에서 밀려 Lisp 머신은 플랫폼으로도 에디터로도 점점 잊혀져 가고 있습니다.

삽질을 시작한 이유

이맥스는 죽기전에 꼭 한번 탐험해 봐야 할 미지의 세계였습니다. 언젠간 써봐야지 하면서도 접신 할 기회가 잘 오지 않습니다.

Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs
https://www.youtube.com/watch?v=JWD1Fpdd4Pc

애런 비버의 Emacs + Vim 영상을 우연히 봤습니다. 골수 Vim 사용자가 Emacs + Evil Mode 로 갈아탄 이야기입니다. Evil Mode 는 Emacs 에서 동작하는 Vim 에뮬레이터입니다. 타이핑으로서의 Vim 은 훌륭하지만 플랫폼으로서는 Emacs 가 더 낫다는 주장.

말을 재밌게 잘 하더군요. 그렇다면 나도 한번? 하는 생각이 들었습니다. 이번 기회가 아니면 영영 구경하지 못하겠단 생각도 들었습니다. 해서 그냥 부담 없이, 관광하는 느낌으로, 몇 주 그 기운만 느껴보기로 했습니다.

설치

https://www.gnu.org/software/emacs/

여기 가면 있는데, macOS 에선 문제가 좀 있습니다. (설명을 mac 기준으로 하지만 설치 외에 다른 환경에서 크게 다른 것은 없을 것 같습니다.)

2019 년, emacs 26.1 기준으로 맥용 바이너리 배포판이 4가지나 있습니다. 하지만 그 중에 이것이 공식판이다 하는 것이 없습니다. 공홈에 설명되어 있는 brew install 버전은 derpecated 되었습니다. MacPort 나 아쿠아맥도 그냥 그렇다고 합니다. 그럼 뭘 어디서?

https://emacsformacosx.com

사이트가 좀 이상해 보이지만, 여기 배포판이 제일 무난하단 평입니다. dmg 파일을 받아서 설치하면 되겠습니다. 혹시 brew cask 를 쓰고 계시면 brew cask 로 설치하는 것이 더 편합니다.

brew cask install emacs

복잡한 해법의 역사

이맥스를 실행하기 전에 아셔야할 것이 있습니다. 이맥스는 40 살이 넘은 프로그램입니다. 많은 문제를 겪으면서 많은 해법이 적용되어 있습니다. 버젼이 올라가면서 새로운 해법을 다시 적용한 경우도 있습니다. 그리고 이 방법들이 서로 충돌하기도 합니다.

궁금한 것을 검색하면 스택오버플로우에서 다양한 답변이 나옵니다. 각자 경험한 여러 버전의 방식을 설명합니다. 레딧을 읽다 보면 서로 자기 방식이 좋다고 트롤링하는 경우도 많습니다.

어떤 문제들에 대해서 지난 2주간 짧게 삽질한 결과를 보여드릴 것입니다. 가능한 쉽고 합리적인 방법을 선택하려고 했습니다만, 여러 가지 다른 방법들이 있을 수 있다는 것은 알아두셨으면 합니다.

설정 파일

이맥스를 실행하기 전에 설정파일도 알아두는 것이 좋겠습니다.

과거에 이맥스 설정 파일은 ~/.emacs 였습니다. 지금은 너무 복잡해져서 별도 폴더~/.emacs.d 를 씁니다.

~/.emacs.d/init.el

앞으로 사용자 설정은 ~/.emacs.d/init.el 파일에 넣으시면 되겠습니다.

(set-frame-font "Menlo-18" nil t)
;;(set-frame-font "DejaVu Sans Mono-18" nil t)

(setq custom-file "~/.emacs.d/custom.el")
(load custom-file)

이맥스 탐험을 시작할 때 무난한 기초적인 init.el 입니다.

이맥스를 띄우고 처음 하는 행위는 보통 기본 폰트를 바꾸는 일일 겁니다. Options -> Set Default Font 에 있습니다. 헌데 이게 저장이 잘 안 됩니다. Options -> Save Options 로 저장이 되어야 하는데 경우에 따라 잘 안 됩니다. 그러니 사용하실 폰트는 속편하게 init.el 상단에 넣어 두는 것이 좋습니다. 어차피 이맥스를 좀 쓰다 보면 상단 메뉴 전체를 없애버리고 싶으실 겁니다.

init.el 은 사용자가 수작업 편집을 많이 합니다. 한데 Emacs Customizer 가 이 파일을 직접 수정합니다. 정말 불안합니다. 해서 Customize 모듈에게 니껀 다른 곳에 쓰라고 지정해둘 필요가 있습니다. 이게 아래 두 줄이 하는 역할입니다.

이미 느끼셨겠지만 이맥스는 설정도 Lisp 로 합니다. 위 내용은 그대로 Lisp 코드입니다.

init.el 을 수정했으면 이맥스를 재기동합니다. 수정한 init.el 을 적용하는데 이 방법이 빠르고 무난합니다.

Terminal vs GUI

Vim 은 터미널에서 구동하는 것이 유리합니다.

Emacs 는 GUI 버전을 구동하는 것이 유리합니다. 터미널 버전을 쓰면 여러가지 문제가 발생합니다. 특히 키 입력이 잘 안 됩니다. GUI 버전으로 시작하는 것을 강력히 추천합니다.

Customize

첫 기동도 하기 전에 커스터마이징의 기초도 말씀드려야 할 것 같습니다. 이맥스가 다른 패키지와 다른 것이 있습니다. 기본 설정이 정말 이상합니다. 요즘 사람들이 당연하다고 생각하는 것들이 모두 꺼져 있습니다. 없는 것은 아닙니다. 그냥 꺼져 있을 뿐입니다. 해서 이맥스 자습서를 따라하기 전에 몇 가지 설정을 켜두면 편리합니다.

수십 년간 기능이 계속 추가되었습니다. 그것들이 활성화가 안 되어 있습니다. 비슷한 기능이 중복으로 들어가 있는 경우도 있습니다. 그런 것은 골라서 활성화해야 합니다. 때마다 무엇을 어디서 켜야하는지 고민해야 합니다. 당연하겠지만 어떤 방법이 더 좋은지는 모두 논란 거리입니다. 그중에 몇 가지를 적어보겠습니다.

이맥스 옵션을 설정하는 방법은 두 가지입니다. 하나는 init.el 을 수작업으로 편집하는 것입니다. setq 명령으로 설정들을 나열합니다. 다른 하나는 Emacs Customizer UI 를 사용하는 것입니다. 설정 결과는 custom.el 에 저장됩니다. 수작업으로 setq 한 것과 결과가 살짝 다릅니다.

무엇이 좋은 가는 꽤 논란 거리입니다. 저는 두 방식을 적절히 혼용해서 썼습니다. 시스템 기초적인 설정은 init.el 에서 setq 로 했습니다. 기타 복잡 다단한 설정들은 커스터마이저를 사용했습니다. 이맥스 그루들은 아주 다른 접근법을 쓰기도 합니다만, 초보에게는 이 방식이 무난한 것 같습니다.

메뉴에서 커스터마이져를 찾아 들어갑니다. Options -> Customize Emacs -> Top Level Customization 에 있습니다. 맥이라면 Emacs ->Preference 로 접근하셔도 됩니다.

이런 화면이 나옵니다. 먼가 복잡해 보이는데 알고 보면 간단합니다. 키보드 대신 그냥 마우스를 쓰시면 됩니다.

상단 세번 째 줄에 입력란이 보입니다. 여기에 키워드를 적당히 입력하고 [Search] 버튼을 누르면 옵션 항목들이 검색되어 나옵니다. 일단 desktop-save-mode 를 입력하고 검색을 눌러봅니다.

desktop-save-mode

그럼 위와 같이 표시가 될 겁니다. 이게 무엇을 하는 옵션인가.

기본 상태의 이맥스는 열어놨던 파일 정보를 저장하지 않습니다. 윈도우 크기나 위치도 저장하지 않습니다.

desktop-save-mode 를 켜면 윈도우 위치와 크기를 기억합니다. 편집하고 있던 파일들도 다시 로딩합니다.

화면에서 Toggle 버튼을 클릭해서 on 을 만듭니다.

Apply and Save 버튼을 클릭해서 현 세션에 적용하고 설정 파일에도 저장합니다. 여기서 저장한 내용은 init.el 에서 지정한 custom.el 에 들어갑니다.

이어지는 옵션들

위와 비슷한 방법으로 아래 것들도 세팅해 줍니다.

auto-save-default nil

기본 설정에서는 # 으로 시작하는 자동 저장 파일을 계속 만듭니다. 하지 못하게 합니다.

make-backup-files nil

~ 로 끝나는 백업 파일도 자동으로 생성합니다. 하지 못하게 합니다.

delete-selection-mode t

영역을 선택하고 문자를 입력하면 선택했던 내용이 삭제되지 않습니다. 일단 삭제 되게 합니다.

inhibit-startup-screen t

기동시 뜨는 도움말 페이지를 끕니다. 이건 당장 하지 않고 나중에 천천히 하셔도 되겠습니다.

vc-follow-symlinks t

심볼릭 링크를 타고 들어갈 때 에러를 냅니다. 하지 못하게 합니다.

이정도 해두면 일단 당황스런 일은 많이 줄어듭니다.

튜토리얼

C-h t

이맥스에서 C-h 키와 t 키를 연속해서 누르면 영문 Tutorial 이 나옵니다. 이걸 따라합니다. 튜토리얼 버퍼는 항상 새로 만들어집니다. 수정하거나 지워도 상관 없습니다.

참고로 화살표 키를 써서 하단으로 쭉 이동하면 화면 반 페이지 분량씩 점프가 일어납니다. 한 줄씩 스크롤되지 않습니다. 이것은 어쩔 수 없습니다; 그냥 그런 것입니다;

제가 대학 다닐 때만 해도 컴퓨터 본체는 1.5 킬로 떨어진 본관에 있었습니다. 공대 터미널과는 모뎀으로 연결되어 있었습니다. 화면 전체 갱신이 일어나면 커서가 느그적 거리며 문자를 찍어나갔습니다. 이맥스가 태어났던 환경을 상상하면 이런 동작이 이해가 됩니다.

튜토리얼 이후

저는 Mastering Emacs 를 읽었습니다. 간단하고 괜찮았습니다. Emacs Field Guide 라는 책도 있습니다. Emacs 개발 배경과 GNU 의 역사에 대한 내용이 시시콜콜하게 자세하게 나옵니다.

온라인 문서들은 아래 두 사이트 정도가 나옵니다.

http://ergoemacs.org/emacs/emacs.html
https://www.masteringemacs.org/all-articles

레딧도 있고요.

https://www.reddit.com/r/emacs/

Package Manager

이맥스에는 자체 패키지 매니저가 있습니다. 하지만 보통 생각하는 그러한 편리한 방식이 아닙니다.

일단 패키지 매니저가 애초에 기동이 안 되어 있습니다. 이맥스에 따라오지만 자동 실행되지 않는다는 것입니다. 이 문제는 emacs 27 에서 개선이 된다고 합니다. 언제 릴리즈될지는 모릅니다.

(require 'package)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/"))
(setq package-enable-at-startup nil)
(package-initialize)

해서 위에 코드를 init.el 최상단 부분에 넣어 두어야 합니다. 패키지 매니저를 활성화합니다.

코드를 보면 아시겠지만 리포지터리가 한 곳이 아닙니다. https://elpa.gnu.org/packages 는 기본적으로 package-archives 목록에 들어갑니다. 따로 넣지 않아도 됩니다. 나머지 중요한 리포지터리들은 수작업으로 등록해야 합니다.

(setq package-enable-at-startup nil) 이라던지, (package-initialize) 는 모두 꼭 필요한 펑션콜입니다. 이것 그대로 init.el 에 들어가 있어야 합니다.

init.el 은 그 자체로 Lisp 프로그램입니다. 해서 명령 실행순서가 중요합니다. package 관련 콜들은 가능하면 최상단에 넣어두는 것이 좋습니다.

use-package

이맥스 기본 package manager 에 또 다른 문제가 있습니다. 선언적으로 패키지를 설치할 수 없습니다. 확장 패키지를 10개 사용하고 있는데 이맥스를 설치한 컴퓨터가 여러 대라면 모두 수작업으로 설치해야 합니다. node.js 에서 package.json + npm install 같은 역할을 하는 것이 없다는 겁니다.

(defun ensure-package (name)
  (if (not (package-installed-p name))
    (package-install name)))

(ensure-package 'nord-theme)
(load-theme 'nord t)

위처럼 간단한 사설 펑션을 만들어 써도 됩니다. 만 농촌스럽기도 하고 기능도 허접합니다. 해서 보통 use-package 라는 것을 씁니다. use-package 는 선언적인 패키지 관리를 가능하게 해줍니다.

https://github.com/jwiegley/use-package

use-package 자체는 수작업으로 설치해야 합니다. 한데 이것도 바로 안 됩니다. 리포지터리 목록을 등록하긴 했는데 각 사이트의 패키지 목록은 가져오지 않았기 때문입니다. 패키지 목록을 수작업으로 받아와야 합니다.

M-x package-refresh-contents RET

package-refresh-contents 명령으로 패키지 목록을 채웁니다.

M-x package-install RET use-package RET

이제 package-install 명령으로 use-package 를 설치합니다. 여기까지는 각 머신에서 수작업으로 해야 합니다. 다음 과정부터는 init.el 에서 use-package 명령으로 자동화 할 수 있습니다.

예로 아래 같은 코드를 init.el 의 (package-initialize) 밑에 넣어두고 쓰면 됩니다.

(use-package nord-theme
   :config
   (load-theme 'nord t))

(use-package counsel
   :config
   (setq ivy-use-virtual-buffers t)
   (setq ivy-count-format "(%d/%d) ")
   (setq ivy-re-builders-alist
         '((t . ivy--regex-fuzzy)))
   (setq ivy-height 16)
   (ivy-mode 1))

참고로 :config 다음 줄들은 패키지가 로딩된 후 실행되는 코드들입니다.

nord-theme 는 위 스크린샷으로 보신 이맥스 테마입니다. 이맥스의 Customizer 로 테마를 세팅할 수도 있는데 설정 파일이 약간 번잡스럽게 됩니다. 복잡한 구성이 아니라면 use-package 로 간단히 쓰는 것도 나쁘지 않아 보입니다.

counsel + ivy 는 파일 오픈이나 버퍼 변경시 fuzzy find 를 구현해 주는 패키지입니다.

Ivy

이맥스에서 파일 찾기 도우미는 크게 3 가지 정도 있습니다. ido, helm, ivy.

ido 는 이맥스 패키지에 따라옵니다. 기능은 제일 단순합니다. 기본 상태에서 꺼져있습니다. 이것을 사용하려면 직접 켜셔야 합니다. Customize 에 가서 ido 로 검색하면 옵션들이 쭉 나옵니다.

helm 은 무척 크고 복잡한 패키지입니다.

ivy 는 helm 에 비해 작지만 파일 이동 / 버퍼 이동 대부분의 경우를 커버합니다. 이맥스에서 fuzzy find 의 시작은 ivy 로 하는 것이 무난해 보였습니다.

1분 Lisp

이것 저것 설정을 하다 보니 Lisp 자체를 좀 알고싶어 졌습니다. 5일간 문서를 살짝 봤습니다.

https://www.gnu.org/software/emacs/manual/eintr.html

이 책은 리스프 기초를 설명합니다. 뒤쪽으로 가면 실제 이맥스 펑션들을 가져다 설명합니다. 여기서 리스프를 다 설명할 순 없지만 아주 기초적인 내용만 몇 가지 나열해 보겠습니다.

(set-frame-font "Hack-18" nil t)

Lisp 에서는 모든 것이 리스트입니다. 리스트는 괄호로 묶습니다. 구성요소는 공백으로 구분합니다. 공백 갯수나 인덴테이션 크기는 중요하지 않습니다. 적당히 보기 좋게 잘라두시면 됩니다.

리스트의 맨 처음 등장하는 것은 펑션 이름입니다. 이후는 인자입니다. 위 명령은 set-frame-font 펑션을 호출합니다.

JavaScript 식으로 보면 set_frame_font(“Hack-18”, null, true); 정도 되는 구문입니다.

(set 'custom-file "~/.emacs.d/custom.el")

변수에 값을 대입하는 명령은 set 입니다. 변수명 custom-file 에 ‘ 을 붙인 것은 custom-file 의 값을 가져오지 말고 이름 그대로를 쓰라는 말입니다. ‘ 을 빼면 수식이 (set “…” “~/.emacs.d/custom.el”) 이렇게 풀려버립니다.

(setq custom-file "~/.emacs.d/custom.el")

때마다 변수 이름에 ‘ 을 붙이는 것은 좀 불편합니다. 해서 setq 명령이 등장합니다. setq 다음에는 ‘ 이 필요없습니다. 해서 설정 대입에는 대부분 setq 를 씁니다.

한글 입력 문제

운영체제 입력기를 한글 상태로 바꾸면 이맥스에서 한글을 입력할 수 있습니다. 하지만 한글 상태에서 C-x 같은 명령키를 누르면 C-ㅌ 로 입력됩니다. 해서 이맥스에서 한글을 원활하게 쓰려면 이맥스 내장 한글입력기를 써야 합니다.

(setq default-input-method "korean-hangul")
(global-set-key (kbd "<f17>") 'toggle-input-
method)

위 코드를 init.el 에 넣어두면 F17 로 한영 변환을 할 수 있습니다. F17 대신 Shift-Space 를 사용하려면 f17 대신 S-SPC 를 넣습니다.

운영체제의 한영 키와 이맥스의 한영 키를 다르게 운영하면 큰 문제가 없습니다. 위 두 줄로 됩니다.

만약 운영체제 한영 키와 이맥스 한영 키를 같게 하고 싶으면 복잡한 절차가 필요합니다. 이맥스만으로는 안 됩니다. 외부 유틸리티들을 써야합니다. 맥에서는 karabiner-elements 를 사용해야 합니다. 윈도우와 리눅스에서는 해보지 않아서 잘 모르겠습니다.

https://github.com/tekezo/Karabiner-Elements
https://macnews.tistory.com/5043

"rules": [
   {
     "description": "Change Hangul/English.",
     "manipulators": [
       {
         "conditions": [
           {
             "bundle_identifiers": [
               "org.gnu.Emacs"
             ],
             "type": "frontmost_application_if"
           }
         ],
         "from": {
           "key_code": "spacebar",
           "modifiers": {
             "mandatory": [
               "left_command"
             ]
           }
         },
         "to": [
           {
             "key_code": "f17"
           }
         ],
         "type": "basic"
       },
       {
         "conditions": [
           {
             "bundle_identifiers": [
               "org.gnu.Emacs"
             ],
             "type": "frontmost_application_unless"
           }
         ],
         "from": {
           "key_code": "spacebar",
           "modifiers": {
             "mandatory": [
               "left_command"
             ]
           }
         },
         "to": [
           {
             "key_code": "f18"
           }
         ],
         "type": "basic"
       }
     ]
   }
 ]

karabiner 에 대한 설명까지 하자면 글이 너무 길어질 것 같습니다. 위에는 제가 사용하고 있는 한영 키 세팅의 예입니다. 참고로만 보세요.

저는 Cmd-Space 를 한영 변환에 사용합니다. Cmd-Space 를 누를 때마다 karabiner 가 F18 키를 생성합니다. 맥 기본 입력기는 F18 로 한영변환을 하도록 세팅했습니다. 이맥스 상태라면 F18 대신 F17 을 생성합니다. 이맥스 내부에서는 F17 로 한영 변환을 합니다.


한 가지가 더 남았습니다. 한영 변환 키를 나누더라도 다른 프로그램에서 한글을 입력하다가 이맥스로 전환하면 다시 C-ㅌ 문제가 발생합니다. 맥 언어 입력 설정에서 Automatically switch to a cocument’s … 를 켜야합니다. 이것을 켜두면 어플리케이션마다 자신의 언어 입력 상태를 유지합니다.

Control Key

이것은 Lisp 시대의 키보드입니다. 양쪽에 Ctrl 키와 Meta 키가 크게 배치되어 있습니다.

맥 풀사이즈 키보드의 일부입니다. 이 정도만 되도 양쪽에 Control 키와 Option 키가 크게 배치되어 있습니다.

지금 우리는 맥에서 이런 키보드를 쓰고 있습니다. Control 키가 왼쪽 구석으로 점점 사라져가고 있습니다.

이맥스에서는 Control 키를 정말 많이 사용합니다. 해서 Caps Lock 키를 Control 키로 변경해서 쓰라고들 합니다. 한데 이것도 계속 쓰다 보면 새끼 손가락이 아파옵니다. 저는 karabiner 로 오른쪽 Command 까지 Control 로 매핑해서 썼습니다. 그닥 나쁘지는 않았습니다.

Meta Key

맥에서는 Option 키가 Meta 키로 작동합니다. 이맥스는 Meta 키도 정말 많이 사용합니다.

(when (eq system-type 'darwin)
  (setq mac-command-modifier 'meta))

Option 키 자리가 꽤 불편합니다. 해서 init.el 에 Command 를 Meta 로 매핑하는 코드를 넣고 한동안 써봤습니다. 편할 때는 편한데 다른 프로그램에서 헷갈리기도 하고 운영체제 광역키와 충돌하기도 했습니다. 별로 유쾌한 경험은 아니었습니다.

Spacemacs

http://spacemacs.org

지금 맥에서 사용하는 키보드와 이맥스 기본 키배열은 잘 어울리지 않습니다. 해서 Vim 에뮬레이터인 Evil Mode 를 주축으로 이맥스 키배열을 모두 다시 세팅한 새로운 스타일의 이맥스 환경이 많이 쓰이고 있습니다. 복잡한 기능 키들이 Space 키 시퀀스로 되어있습니다. 그래서 이름이 Spacemacs 입니다. Vim 에서 Leader Key 를 Space 로 세팅했다고 보시면 됩니다.

키배열 뿐만 아니라 여러 패키지들을 기능별로 한데 묶어 Layer 라는 세트들을 만들었습니다. 관리 편의성이 좋아집니다.

Spacemacs 는 써보지 못했습니다. Spaemacs 전까지만 체험하고 이맥스 2주 투어를 마치기로 했습니다.

Vim, Emacs, VS Code

Vim 과 Emacs 는 한 시대를 구가한 에디터들입니다. Vim 이 날카로운 칼잡이 같았다면 Emacs 는 책보따리를 지고 다니는 마법사 같았습니다.

Emacs 와 Vim 을 결합한 Spacemacs 는, 억지로 말하자면 검을 든 마도사 같은 존재입니다. 여기까지 가야하는지는 잘 모르겠습니다.

시대 배경만 보자면 VS Code 가 현재 가장 사랑받을 수 있는 에디터입니다. 저도 미래에는 VS Code 를 많이 쓰게 될 것 같습니다.

하지만 내일부터 당장은 + 가능하면 오랫동안 tmux + vim 정도 잘 세팅해서 써볼 생각입니다. 아직 이런 향수가 좀 남아있습니다.

업데이트

2020년 11월 현재;

자바 코딩 다시하면서 IntelliJ 를 메인으로 쓰고 있습니다. 간혹 예전 잡다한 코드를 수정해야 하면 VS Code 를 씁니다. 텍스트 파일들 관리를 위해선 Sublime Text 를 쓰고 있습니다;

1개의 댓글

comment-user-thumbnail
2021년 10월 26일

혹시 emacs로 java로 개발하시면서 힘드셨던점 있을까요? ㅠㅠ 저도 emacs로 go 쓰는데 이제 갑자기 java 개발하라내요 ....

답글 달기