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