Emacs를 사용하는 이유
나는 텍스트를 많이 다루는 일을 한다. 그러나 흔히 사용하는 Microsoft Office나 LibreOffice 보다는 텍스트 에디터를 주로 사용한다. 일단 거의 모든 작업은 텍스트 에디터로 진행하고, 특정 포맷이 요구될 때는 Pandoc을 이용해 변환하는 것이 보통이다. 그리고 내가 사용하는 텍스트 에디터가 바로 Emacs다. (과거 Vim을 사용했던 적이 있지만, 결국은 Emacs에 정착했다.)
사실 나 스스로도 내가 Emacs를 선택했다는 사실이 믿어지지 않는다. 나는 평생 동안 단순한 것을 추구하는 성향을 유지해 왔는데, Emacs는 그와 정 반대의 특징을 가졌기 때문이다. 한마디로 요약하면, 엄청나게 다양한 기능을 가졌지만 그 대신 매우 복잡하고 배우기 어려운 에디터가 바로 Emacs다. 반면에 Emacs의 라이벌이자 나도 한때 사용한 적이 있는 Vim은 상대적으로 적은 기능을 제공하지만 그 대신 단순하고 배우기 쉽다. 사실 내 성향으로 보자면 Vim과 거의 완벽하게 맞아떨어지는데, 나는 왜 Vim을 포기하고 Emacs를 선택했을까? 몇 가지 떠오르는 이유들을 적어보겠다. (본의 아니게 Emacs vs Vim 비교 글이 되어버린 것 같은데, 그게 목적이 아니라 내가 왜 Emacs를 사용하게 되었는지 스스로 돌아보고 싶었을 뿐이다.)
먼저 확실히 하고 싶은 것은, 나는 여전히 단순한 것을 선호한다는 점이다. 현재 Emacs를 사용하고 있지만, 수많은 기능과 복잡함을 좋아해서 선택한 것이 아니다. 개인적으로 이 부분은 단점이라고 생각한다. 그러나, 그러한 단점에도 불구하고 다른 장점들이 더 많기 때문에, Vim이 아니라 Emacs를 선택한 것이다.
직관성
Emacs가 더 직관적이다. 복잡한 Emacs가 단순한 Vim 보다 더 직관적이라는
말을 언뜻 이해하기 어려울 수 있으니, 간단한 예를 들어 보겠다. Vim의 커서
이동 키는 그 유명한 h
, j
, k
,
l
방식이다. 각각의 문자에 특별한 의미가 있는 것이 아니라,
단순히 키보드 상에서 오른손으로 쉽게 누를 수 있는 위치의 키를 배정한
것이다. 즉, 처음에는 문자적으로 그 의미가 와닿지 않아서 기억하기 어려울
수 있지만, 일단 익숙해지면 손가락의 움직임을 최소화하여 매우 편리하게
사용할 수 있다.
반면에 Emacs에서는 커서 이동 키가 C-p
, C-n
,
C-b
, C-f
로 되어 있다 (C-
는
Ctrl
키를 함께 누르라는 뜻). 각각 previous
,
next
, backward
, forward
에
대응하는 문자들이다. 즉, 각각의 키가 무엇을 의미하는 지 바로 알 수
있지만, 충분히 익숙해진 후에도 그렇게 편리하지는 않다. 이 것만 봐도 두
프로그램의 철학적 차이를 알 수 있다. 비단 커서 이동 뿐만 아니라,
프로그램 전반에 걸쳐 이와 같은 특징들이 나타난다. 개인적으로는 Vim의
효율성 보다 Emacs의 직관성을 선호한다.
개방성
Vim은 오픈소스임에도 불구하고 Bram Moolenaar 한 사람에 의해 개발된다. (정말로 단 한 명이라는 뜻은 아니고, 당연히 함께 일하는 팀원들이 있겠지만, 사실상 한 사람에 의해 좌지우지될 수 있다는 얘기다.) 그는 과거 한 인터뷰에서는 이런 얘기를 한 적도 있다:
INTERVIEWER: How can the community ensure that the Vim project succeeds for the foreseeable future?
BRAM: Keep me alive.
물론, 대단한 사람이라는 것은 의심의 여지가 없지만, 아무리 그래도 한 사람에게 모든 것을 의지하는 구조는 그다지 바람직하지 않다. 향후 그 사람에게 무슨 일이 생길 지 알 수 없고, 그 사람의 능력이 쇠퇴할 수도 있기 때문이다.
반면에 Emacs는 그런 부분을 걱정할 필요가 없다. GNU라는 공신력 있는 단체에서 다수의 개발자들이 참여하여 개발 및 관리하는 프로그램이기 때문이다. 앞서 언급한 직관성은 단순히 취향의 문제였지만, 개발 및 관리 주체에 대한 문제는 명백하게 우열을 가릴 수 있다. 당연히 Emacs가 낫다.
기반 언어
Vim과 Emacs 모두 다양한 설정을 지원한다. 일반적인 Windows 프로그램들처럼 메뉴를 통해 설정을 변경하는 것이 아니라, 텍스트 파일 포맷으로 설정을 저장 및 수정하는 방식이다. 그 설정 파일을 보관해 두면, 추후 다른 PC에서도 완전히 동일한 환경을 구축할 수 있다. 상당히 편리하다.
이 설정 파일에는 당연히 나름의 규칙이 있어야 프로그램이 이해하고 적용할 수 있는데, Vim에서는 Vimscript라는 언어를 사용한다. 문제는, 이것이 범용 언어가 아니라 Vim만을 위해 만들어진 제한된 기능의 언어라는 점이다. 반면에 Emacs는 Elisp라는 언어를 사용한다. 이는 사실상 완전한 형태의 범용 프로그래밍 언어로, Vimscript 보다 훨씬 강력하다고 평가 받는다. (그래서 Emacs의 확장 기능이 대체로 Vim의 확장 기능 보다 뛰어나다.)
당연한 얘기지만, Vim을 더 잘 활용하려면 Vimscript에 익숙해져야 하고, Emacs를 더 잘 활용하려면 Elisp에 익숙해져야 한다. 나는 프로그래머가 아니고, 관련 업계 종사자도 아니지만, 어차피 조금이라도 배워야 한다면 제한적인 전용 언어 보다는 더 강력한 범용 언어를 배우고 싶다. (물론, 프로그래밍 언어를 배우는 것은 상당한 노력과 시간이 필요한 일이므로, 취미 삼아 천천히 공부해볼 생각이다.) 이 부분 역시 명백하게 Emacs가 더 낫다고 생각한다.
위에 언급한 이유들 중에서 나에게 지금 당장 영향을 미치는 것은 사실 (1)번 하나 뿐이다. (2)번과 (3)번은 먼 미래에 대한 것이기 때문이다. 그러나, 아무리 미래의 일이라 하더라도, 뭔가 불안 요소가 있는 프로그램을 내 인생의 주력 프로그램으로 삼고 싶지는 않았다. 그리고 지금은 Emacs를 선택한 것에 정말 만족하며 사용하고 있다. (이 블로그도 Emacs로 만들었다.)
그 외에도 Emacs에는 많은 장점이 있지만, Vim과 중복되는 장점은 굳이 상세히 적지 않았다. (Emacs와 Vim은 텍스트 편집이라는 동일한 목적을 가지고 장기간에 걸쳐 오픈소스로 개발되어 왔기 때문에, 비슷한 장점을 많이 가지고 있다. 예를 들면, 특정 플랫폼에 종속적이지 않고, 플러그인 방식으로 확장이 가능하며, 두터운 사용자 층 덕분에 정보를 구하기 쉽다는 장점은 둘 모두에 해당된다.) 쉽지는 않겠지만, Emacs의 장점이 더 많이 알려져서 다양한 분야의 신규 사용자가 유입되면 좋겠다.