Emacs를 쓰는 이유?

내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.

Emacs를 쓰는 이유?

Emacs를 쓰는 이유가 뭘까? 현대적 에디터와 비교해보면 투박하기 짝이 없는 이 구닥다리 에디터를 여지껏 사용하는 이유가 뭘까? 한참을 생각해 보았지만 명확한 이유를 설명할 수 없다.

만남

Emacs를 처음 접한 것은 대학교 2학년 때 쯤인 것 같다. PC에 리눅스를 설치하고 emacs를 실행시켜 봤다. 그리고 바로 C-x C-c로 빠져나왔다. Emacs를 실행시킨 다음 빠져나오지 못해 애먹는 경우도 많다고 하는데 나는 첫 화면에 나온 메시지를 주의 깊게 읽어서였는지 무리 없이 빠져나올 수 있었다. 그리고 수 년간 Emacs를 띄운 적은 없었다.

사용

Java가 처음 나왔을 무렵 적절한 IDE가 없었다. 그 전까지 사용했던 Turbo Pascal이나 Borland C/C++에는 IDE가 딸려 나왔다. Java는 도스창에서 실행할 수 있는 명령만 있을 뿐 IDE 같은 게 없었다. 메모장에서 코딩을 시도했지만 너무 불편했다. 그래서 쓸만한 에디터를 찾아봤다.

처음에는 Vim을 썼다. Vi를 조금 배웠기 때문에 기본 사용법은 알고 있었고, 문법 강조도 잘 되었다. 컴파일 및 실행은 도스창에서 해야 했지만 그럭저럭 쓸만 했다. 어쩌면 그때 Unix나 Linux에서 개발했다면 아마 지금도 Vim을 쓰고 있을지도 모르겠다는 생각이 든다.

JBuilder도 나왔지만 너무 무겁고 복잡했다. Kawa란 도구도 잠시 사용했다. 가볍고 빨랐으며, Kawa 안에서 프로그램을 작성해 컴파일하고 실행하는 게 가능했다. 나름 괜찮았지만, 에디터 글꼴을 마음에 들게 바꿀 수 없는 사소한 문제가 있었다. UltraEdit도 잠시 써봤지만 왠지 마음에 들지 않았다.

그러다 Emacs에 JDEE(Java Development Environment for Emacs)를 설치해 사용하면 꽤 쓸만한 개발 환경을 만들 수 있다는 사실을 알게 되었다. 문법 강조도 에디터 중 가장 마음에 들었다. 그렇게 해서 이후 수년 간 Emacs를 사용하게 되었다. 물론 Emacs를 제대로 사용하려면 Emacs Lisp을 배워야 한다는 얘기도 있었지만, 괄호가 잔득 있는 미지의 언어를 배울 생각은 없었다. 설정 파일이 Emacs Lisp으로 되어 있는게 조금 마음에 걸렸지만 필요한 부분을 어렵지 않게 수정할 수 있었다.

외도

그렇게 Emacs를 사용하다가 Eclipse를 알게 되었다. Emacs에 대체로 만족했지만 한가지 문제가 있었는데, 디버깅이 제대로 안 된다는 것이었다. 원래는 Emacs에서 스텝 단위로 프로그램을 진행하면서 변수 상태를 볼 수 있는데 그게 속도가 사용하지 못할 정도로 느렸다. Eclipse는 디버깅도 잘 됐고, 리팩터링까지 지원했다. 이후 Java로 뭔가를 만들 때는 Eclipse를 사용했다.

정말 열심히 Eclipse를 익혔던 것 같다. 기능을 탐구하고 정리했으며, Eclipse를 사용하지 않는 사람들에게 Eclipse를 전파했다. Eclipse 기능을 제대로 활용하지 못하는 사람들에게 코딩할 때 유용하게 쓸 수 있는 여러 기능을 알려주었다. 이런 것을 모아 Eclipse 관련 책을 쓰기도 했다.

그런데 Eclipse는 버전이 올라갈수록 점점 무거워졌다. 하드웨어가 10년 전과는 비교도 할 수 없을 정도로 좋아졌지만, Eclipse는 뜨는데 여전히 오래 걸린다. Python이나 JavaScript로 간단한 테스트를 할 때 Eclipse를 사용하는 것은 부담스러웠다. Eclipse는 Java를 잘 지원했지만 다른 언어 지원은 만족스럽지 않았다. Java 이외의 언어에 관심을 갖게 되면서 Eclipse 말고 다른 도구가 필요했다.

복귀

이런 저런 에디터를 살펴봤지만 결국 Emacs로 돌아오게 되었다. 특히 Lisp 계열 언어인 Clojure로 코딩할 때는 Emacs만한 에디터도 없다는 생각이 든다. 웹 에디터 프로젝트를 할 때도 Emacs를 사용했다. auto-complete, js2-mode, tern-mode, yasnippet을 사용하면서 JavaScript로 즐겁게 코딩했다.

다시 Java를 주로 사용하게 되어 회사 일에 Emacs를 쓰지는 못하지만, 블로그를 쓸 때나 개인 프로젝트를 할 때는 여전히 Emacs를 사용한다. 최근에는 org-mode를 쓰기 시작했다. 아직 초보 수준이지만 할일을 관리하는 데 괜찮은 도구인 것 같다.

결론

Emacs가 최고고 다른 에디터는 열등하다는 생각으로 Emacs를 쓰는 건 아니다. 그동안 Vim, Sublime Text, Atom 등 다른 에디터를 써보려 했다. 그러나 Emacs가 가장 마음에 들었고, 어쩌다 보니 가장 손에 익은 에디터가 되었다. Emacs 키 바인딩을 훌륭하다고 생각하는 것도 아니다. 어떤 기능은 '이걸 어떻게 누르라는 거야?' 하는 생각이 들 때도 많다. 그렇지만 마음에 안 들면 쉽게 바꿀 수 있다. (요즘 나온 다른 에디터도 그 정도는 지원한다.)

콘솔에서 로그 파일 같은 걸 열어볼 때는 Vi을 사용한다. 그러나 프로그램을 작성할 때는 Emacs를 사용한다. 블로그에 올릴 글을 쓸 때도 Emacs를 사용한다. Emacs를 쓸 때 나를 만족시키는 미묘한 느낌 같은 것이 있는데, 말로 표현하기가 어렵다. 그저 취향이라고 말 할 수 밖에 없을 것 같다.

참고

  • JDEE (Java Development Environment for Emacs) BeanShell 기반의 Java 개발 환경. 처음에는 JDE란 이름을 썼지만 법적인 문제로 이름을 바꿨다. JDK5 이후 Java 언어에 새로 추가된 기능을 따라가지 못해, 이제는 널리 사용되지 않는 듯 하다.