이맥스
위키백과 ― 우리 모두의 백과사전.
이맥스 (Emacs)는 사용자가 많은 부분을 설정할 수 있는 고성능 문서 편집기이다. 특히 프로그래머들이 많이 쓴다. 이맥스는 단순한 에디터를 넘어서는 텍스트 처리를 위한 포괄적 통합환경, 혹은 어플리케이션 실행 환경이라고 할 수 있다.이맥스는 매우 오랜 역사를 갖고 있고, 바탕부터 새롭게 짜는 개선을 거쳐, 많은 친족을 낳으며 현재에 이르고 있다.현재의 주 GNU 이맥스의 개발은 유닉스 환경(과 VMS)을 주된 타겟으로 하고 있지만, 마이크로소프트 윈도우즈 등 다양한 환경에서도 이용 할 수 있다.
목차 |
[편집] 역사
이맥스는 당초 리처드 스톨만에 의해 에디터 teco 의 매크로로서 개발됐다.이맥스는 Editor MACroS 의 약자이다.
후에 제임스 가슬링에 의해 가슬링 이맥스로 개선되었고, 이 때에 리스프(Moclisp 이라 부른다)언어에 의한 환경설정 기능 및 에디터 자신의 기능을 확장할 수 있는 기능이 포함되었다.
현재 주로 사용되는 것은, 자유 소프트웨어 재단의 리처드 스톨만이 바닥부터 다시 작성한 GNU 이맥스라 불리는 이맥스다. GNU 이맥스도 이맥스 리스프로 불리는 리스프를 기본으로 한 환경설정 언어를 가지고 있다.
[편집] 이맥스와 계열 편집기
이맥스 계열의 편집기들을 복수형으로 Emacsen이라 부른다. Emacsen이 확실한 정의가 있는 것은 아니지만, GNU 이맥스를 중심으로 한 주된 변형에는 다음과 같은 것들이 있다: NEmacs, Epoch, Nepoch, Mule, FSF 이맥스 (GNU 이맥스), XEmacs, Lucid Emacs, Meadow, NTEmacs.
[편집] 조작법
이맥스의 키 조작은, 키보드의 배치와는 별 상관없이 기능의 이름에 따른 키 조작 명령을 갖는 것이 특징이다.예를 들면, 커서의 상하 좌우 이동은 각각 C-p, C-n, C-b, C-f 에 할당되고 있으(여기에서 C-? 은 이맥스에서 쓰는 키 조작의 표기법으로,컨트롤 키를 누르면서 다른 키를 동시에 누른 것을 나타낸다)며, 각각 Previous, Next, Back, Forward 라는 영어단어의 머릿글자를 딴 것이다.또한, 이맥스는 Vi에는 있는 편집 모드, 명령 모드, 비주얼 모드 등의 모드도 없다.
이러한 키 조작은 기본적으로 앞에 언급한 이맥스 리스프를 사용하여 전부 설정이 가능하다. 이맥스에선 vi 의 조작을 흉내낼 수 있는 에뮬레이터도 몇 개 있다. (vi-mode, viper-mode).
[편집] GUI 환경
이맥스는 원래 텍스트 단말기에서 쓰도록 설계하여 만들었지만 적어도 GNU 이맥스 버전 18 은 X Window System 어플리케이션으로서 컴파일할 수 있다. 그러나, 실제의 작동은 xterm 같은 터미널 에뮬레이터 안에서 작동하는 것이었다.
Epoch 은 GNU 이맥스 버전 18 을 기초로 하여 X Window System 의 마우스 사용 다중 윈도우 기능에 대응시킨 것이다. Lucid Emacs는 이맥스 버전 19를 기본으로 해 고도의 GUI 에 대응시킨 것으로서 Lucid 사에 의해 개발됐다.GNU 이맥스도 서서히 GUI 에 대응해 가고 있지만, 그 개발 속도는 너무나도 느리고, 그것에 불만을 가진 팀에 의하여 Lucid Emacs 를 기본으로 한 XEmacs 프로젝트가 시작됐다. (덧붙여, 유래가 분명치 않은 라이센스 GNU 이맥스의 코드가 존재하고 있던 것도 둘이 분리된 이유의 하나이다) XEmacs와 구분하기 위해 원래의 GNU 이맥스를 FSF 이맥스라고 부르기도 한다. (XEmacs 도 GPL 을 따르고, 따라서 XEmacs도 GNU 이맥스이기 때문에)
이맥스 버전 21, XEmacs 는 그래픽 기능이 강화되었고, 1 버퍼 안으로 여러의 사이즈나 스타일의 폰트를 혼재시키는 것도 가능한다.
[편집] 어플리케이션 실행 환경으로서의 이맥스
이맥스 리스프는 커스터마이즈 언어에 그치지 않고, 완벽한 프로그래밍 언어이기도 하다. 이맥스 기능의 대부분은 이맥스 리스프로 쓰여져 있다. 즉, 이맥스의 구조는 이맥스 리스프의 실행 기능(과 기본적인 편집 기능)을 갖고 있는 이맥스 리스프 인터프리터를 중심으로, 리스프로 쓰여진 많은 코드에 의하고 실현되고 있다.예를 들면, 이맥스는 많은 프로그래밍 언어에 맞는 편집 상태를 갖고 있어, 자동적으로 들여쓰기를 하고, 예약어나 주석을 다른 색으로 표시해 주거나, 적당히 입력을 보완해 주는 기능이 있고, 이러한 기능은 전부 이맥스 리스프로 쓰여져 있다.
이와 같은 편집 기능에 그치지 않고, 이맥스 리스프는 TCP/IP 통신이나 외부 프로세스의 시동, 파일 입출력등의 기능을 가지고 있어서, 에디터에 포함된 기능이라고 할 수 없을 만큼 막강한 기능도 많이 이맥스 리스프로 기술되어 있다.이런 기능들을 이용하여, 독립 어플리케이션이라고도 할만한 프로그램이 쓰여져 왔다.예를 들어, 그러한 어플리케이션으로서는 메일러 Mew, mh-e, Wanderlust, 뉴스·메일 리더 Gnus, 웹 브라우저 Emacs W3, irc 채팅 클라이언트 에뮬레이터 (M-x terminal-emulator), 자바 통합 개발 환경(JDE) 등이 있다.이맥스는 이러한 어플리케이션을 구동하는 실행 환경이라고 할 수 있다.
[편집] 이맥스의 문제점
이맥스의 결점의 하나는, 기능이 너무 많아 대응하는 리스프 코드를 로딩하는 데에 긴 시간이 걸리는 점이다(기본적인 리스프 함수군은 실행 바이너리에 미리 사전 로드되고 편입되고 있지만). 하드웨어 용량과 속도가 커져서 빨리 시동할 수도 있지만, 실제로는 XEmacs, Meadow2 와 같은 고기능의 버전이 차례차례로 나오기 때문에 시동 시간은 짧아지지 않는다. 단 이맥스는 내부 셸에서 다양한 기능을 실행시킬 수 있기 때문에, 이맥스를 일단 구동시켜 놓고 일체 종료하지 않는 방법이 가능하다. 이와 같이 사용하면 시동 시간이 긴 것은 문제가 되지 않는다고 주장하는 사람도 있다.
두번째 문제는 초보자가 처음 사용하기 힘들다는 점이다. 특히 옛날의 이맥스는 화살표 키를 사용할 수 없었기 때문에 초보자에게는 당황스러운 점이 많았다.메뉴나 툴바도 있지만, 초보자는 익숙해 지기가 상당히 어렵다. 예를 들면, 이맥스 메일러에서 검색은 윈도우즈의 일반적 메일러인 아웃룩 익스프레스의 "대문자 소문자 구별" " 날짜 범위 지정" 등의 설정 예정표를 사용한 검색과 비교해 보면 압도적으로 어렵다. 또한, 이맥스의 설정항목은 GUI 로 설정할 수 있는 항목도 있지만, 예를 들어 일반적인 윈도우즈 상의 GUI 어플리케이션인 모질라나 인터넷 익스플로러의 설정표와 비교하면 직관적이지 않아 어렵고, 설정 파일을 직접 편집하지 않으면 안 되는 경우도 많다.게다가 이 설정 파일은 이맥스 리스프 코드 그 자체인 것이다.설정을 위해서 프로그래밍 언어인 이맥스 리스프를 습득하지 않으면 안되는 상황은 에디터만을 사용하고 싶은 사용자에 있어서는 성가신 일일 것이다.
세번째로, 에디터와 리스프 개발 환경이 합쳐져 있고 개발이 쉽기 때문에 비슷한 기능이 난립하기 쉽다.특히 메일러에서는 "내 메일러"식의 변형이 난립하고 있고, 이맥스 매니어가 아닌 사람에 있어서는 어느 것을 사용하는 것이 좋을지 쉽게 알기가 힘들다.
이와 같은 문제가 있지만(있기때문에) 특히 리스프를 아는 프로그래머에 있어서는 인기가 높은 에디터이다.
[편집] 종교 전쟁
이맥스와 Vi (계열)는 모두 유닉스 환경에서 인기 있는 에디터이고, 둘 다 열광적인 사용자가 있다. 양측 사이엔 마치 종교 전쟁이라고도 할 수 있는 경쟁이 전개되어 왔다.
[편집] 바깥 고리
분류: GNU 프로젝트 소프트웨어 | 자유 소프트웨어 | 문서 편집기