맨위로가기

이맥스

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

이맥스는 리처드 스톨만이 개발한 텍스트 편집기로, 'Editor MACroS'의 약자이다. 1970년대 MIT AI 연구소에서 시작되었으며, TECO 편집기의 매크로 기능을 발전시켜 만들어졌다. 초기 이맥스는 TECO와 유사한 방식으로 작동했지만, 이후 자체적인 텍스트 편집기로 발전했다. GNU Emacs는 Gosling Emacs의 자유 소프트웨어 대안으로 개발되었으며, Emacs Lisp를 확장 언어로 사용한다. 이맥스는 다양한 GUI 환경을 지원하며, 텍스트 편집 외에도 응용 프로그램 실행 환경으로도 사용된다. 이맥스는 키 바인딩을 통해 조작하며, 사용성, 설정의 복잡성, 성능 문제 등의 단점이 존재하지만, 이맥스 교회와 같은 독특한 문화와 Emacs 새끼손가락과 같은 용어가 존재한다.

더 읽어볼만한 페이지

  • 헥사 편집기 - GNU 이맥스
    GNU 이맥스는 1984년 리처드 스톨먼이 개발한 자유 소프트웨어 텍스트 편집기로, C 언어와 Emacs Lisp를 사용하며, 다양한 기능과 확장성을 통해 텍스트 편집, 프로그래밍, 파일 관리 등 다양한 용도로 사용된다.
  • 헥사 편집기 - Vim
    Vim은 브람 물라나르가 개발하여 1991년 처음 공개한 텍스트 편집기로, vi 편집기의 확장판이며 프로그램 소스 코드 편집에 유용한 다양한 기능을 제공한다.
  • 리스프로 작성된 자유 소프트웨어 - GNU 이맥스
    GNU 이맥스는 1984년 리처드 스톨먼이 개발한 자유 소프트웨어 텍스트 편집기로, C 언어와 Emacs Lisp를 사용하며, 다양한 기능과 확장성을 통해 텍스트 편집, 프로그래밍, 파일 관리 등 다양한 용도로 사용된다.
  • 리스프로 작성된 자유 소프트웨어 - 맥시마 (소프트웨어)
    맥시마는 MIT에서 개발된 Macsyma를 기반으로 GPL 라이선스 하에 공개된 오픈 소스 컴퓨터 대수 시스템으로, 기호 연산, 임의 정밀도 연산, 프로그래밍 기능 등을 제공하며 프로그래밍 교육 및 컴퓨터 대수 교육용으로 활용 가능하다.
  • 이맥스 - 리처드 스톨먼
    리처드 스톨먼은 자유 소프트웨어 운동의 창시자이자 GNU 프로젝트 설립자로서, Emacs 편집기 개발, GNU 운영 체제 개발, 자유 소프트웨어 재단 설립, 카피레프트 개념 대중화, GNU 일반 공중 사용 허가서 개발 등 자유 소프트웨어 운동을 이끌었으나, 논쟁적인 발언으로 FSF 회장직에서 사임 후 복귀하기도 한 미국의 컴퓨터 프로그래머, 해커, 사회 운동가이다.
  • 이맥스 - 제임스 고슬링
    제임스 고슬링은 자바 프로그래밍 언어 개발자로 가장 잘 알려진 캐나다 출신의 컴퓨터 과학자로, 썬 마이크로시스템즈 등 여러 회사를 거쳐 현재는 은퇴 후 다양한 기업의 고문 및 이사로 활동하고 있다.
이맥스 - [IT 관련 정보]에 관한 문서
기본 정보
종류텍스트 편집기
개발
개발자데이비드 A. 문, 가이 스틸 주니어
운영 체제TECO, 크로스 플랫폼, 유닉스 계열
프로그래밍 언어LISP, C
출시
최초 출시일1976년
안정화 버전 출시일2024년 3월
일반 정보
라이선스GNU GPLv3
웹사이트공식 웹사이트

2. 역사

리처드 스톨만은 TECO 편집기의 매크로 기능에서 발전된 이맥스를 개발했다.[2] 이맥스는 ''Editor MACroS''의 약자이다. 1970년대 MIT AI 연구소에서 이맥스 개발이 시작되었는데, 이 연구소의 PDP-6PDP-10 컴퓨터는 ITS 운영 체제를 사용했으며, 기본 라인 편집기는 TECO였다. TECO는 텍스트 추가, 편집, 표시를 위해 별도의 모드를 사용해야 했기 때문에, 사용자가 문자를 입력해도 즉시 반영되지 않았다. 이러한 동작은 ed와 유사하다.



데이비드 A. 문




1976년 리처드 스톨먼은 스탠퍼드 AI 연구소에서 프레드 라이트가 작성한 ''E'' 편집기를 보고 WYSIWYG 기능에 영감을 받았다. MIT로 돌아온 스톨먼은 해커 칼 미켈슨이 TECO에 추가한 ''Control-R'' 모드를 효율적으로 재구현하고, 사용자가 모든 키 입력을 TECO 프로그램을 실행하도록 재정의할 수 있는 매크로 기능을 추가했다.[3]

새로운 버전의 TECO는 AI 연구소에서 큰 인기를 얻었고, ''매크로''를 의미하는 ''MAC'' 또는 ''MACS''가 붙은 사용자 지정 매크로가 많이 생겨났다. 2년 후, 가이 스틸은 다양한 매크로를 단일 세트로 통합하는 프로젝트를 맡았다.[21] 스틸과 스톨먼은 새로운 매크로 세트를 확장하고 문서화하는 기능을 포함하여 구현을 완료했다.[3] 이 시스템은 EMACS (''Editing MACroS'' 또는 ''E with MACroS'')라고 불렸는데, 스톨먼은 "당시 ITS에서 가 약어로 사용되지 않았기 때문"에 이 이름을 선택했다.[22]

스톨만은 과도한 사용자 지정과 ''사실상'' 분기에 문제가 있다고 보고, 모든 개선 사항을 자신에게 다시 제공해야 한다는 사용 조건을 설정했다.[24]

원래 이맥스는 TECO와 마찬가지로 ITS를 실행하는 PDP-10에서만 실행되었다. 이맥스는 TECO와 상당히 다른 동작을 보여 자체적인 텍스트 편집기로 간주되었고, ITS의 표준 편집 프로그램이 되었다. Mike McMahon(Mike McMahon)은 이맥스를 ITS에서 TENEX 및 TOPS-20 운영 체제로 이식했다. 켄트 피트먼, 얼 킬리언, 유진 시카렐리 등도 초기 이맥스 개발에 기여했다. 1979년까지 이맥스는 MIT의 AI 연구소와 컴퓨터 과학 연구소에서 주요 편집기가 되었다.[25]

|thumb|GNU Emacs에서의 C 소스 코드 편집]]

|thumb|GNU Emacs에서 C++ 코드를 편집하고 컴파일]]

2. 1. 초기 이맥스

리처드 스톨만은 TECO에 매크로 기능을 추가하여 이맥스를 개발했다.[26][80] 이맥스는 Editor MACroS의 약자이다. 초기에는 Mike McMahon과 Daniel Weinreb 등이 LISP 머신용으로 작성한 EINE (''EINE Is Not EMACS'')과 ZWEI[26] (''ZWEI Was EINE Initially'') 및 Owen Theodore Anderson이 작성한 Sine (''Sine Is Not Eine'')[27] 등 다양한 이맥스 유사 편집기들이 개발되었다. 특히 Weinreb의 EINE은 Lisp로 작성된 최초의 이맥스였다.[80] 1978년, Bernard Greenberg는 Honeywell의 케임브리지 정보 시스템 연구소에서 Multics Emacs를 거의 전적으로 Multics Lisp로 작성했다.[80] Multics Emacs는 나중에 NIL 프로젝트를 위해 NILE 이맥스 유사 편집기를 개발한 Richard Soley와 Barry Margolin에 의해 유지 관리되었다.[80]

제임스 고슬링은 1981년 유닉스에서 실행되는 이맥스 유사 편집기(Gosling Emacs)를 작성했다.


제임스 고슬링은 1981년에 유닉스에서 실행되는 최초의 이맥스 유사 편집기인[80] 고슬링 이맥스를 개발했다.[80] 고슬링 이맥스는 C로 작성되었으며, 확장 언어로 Lisp와 유사한 구문을 가진 Mocklisp를 사용했다.[80] Mocklisp에는 심볼도 리스트도 없었고[81], 구문이 LISP 스타일일 뿐 진짜 LISP는 아니었다.

Computer Corporation of America의 ''CCA EMACS'' (Steve Zimmerman)에 대한 초기 광고[28]는 1984년에 등장했다.[29]

GNU Emacs가 텍스트 콘솔에서 실행 중


마이크로소프트 윈도우에서 실행 중인 GNU Emacs


modus-operandi 테마를 사용한 Emacs 27의 C 파일


1984년, 리처드 스톨만은 독점 소프트웨어였던 Gosling Emacs의 자유 소프트웨어 대안을 만들기 위해 GNU Emacs 작업을 시작했다.[83] GNU Emacs는 초기에 Gosling Emacs를 기반으로 했지만, 스톨먼이 Mocklisp 인터프리터를 진정한 Lisp 인터프리터로 교체하면서 거의 모든 코드를 다시 작성해야 했다.[83] GNU Emacs는 초창기 GNU 프로젝트가 릴리스한 첫 번째 프로그램이 되었다. GNU Emacs는 C로 작성되었으며, C로 구현된 이맥스 리스프(elisp)를 확장 언어로 제공한다. 1985년 3월 20일, 버전 13이 최초 공개 릴리스 되었고,[31] 1985년 후반에 출시된 버전 15.34가 널리 배포되었다.[83] GNU 이맥스는 마르쿠스 헤스가 1986년 그의 해킹 공격에서 GNU Emacs의 이메일 하위 시스템의 보안 결함을 악용하여 Unix 컴퓨터에 대한 슈퍼유저 접근 권한을 얻을 정도로[85] Gosling Emacs보다 더 많은 기능을 제공했으며, 특히 확장 언어로서의 모든 기능을 갖춘 Lisp를 제공하여 곧 Unix Emacs 편집기로서 Gosling Emacs를 대체했다.

2. 2. 이맥스 계열 편집기

이맥스 계열의 편집기들을 복수형으로 Emacsen이라 부른다. Emacsen이 확실한 정의가 있는 것은 아니지만, GNU 이맥스를 중심으로 한 주된 변형에는 NEmacs, Epoch, Nepoch, Mule, FSF 이맥스 (GNU 이맥스), XEmacs, Lucid Emacs, Meadow, NTEmacs 등이 있다.[26]

몇 년 동안 프로그래머들은 다른 컴퓨터 시스템을 위한 다양한 이맥스 유사 편집기를 작성했다. 여기에는 Mike McMahon과 Daniel Weinreb이 Lisp machine용으로 작성한 EINE (''EINE Is Not EMACS'')과 ZWEI[26] (''ZWEI Was EINE Initially'') 및 Owen Theodore Anderson이 작성한 Sine (''Sine Is Not Eine'')[27]이 포함되었다. Weinreb의 EINE은 Lisp로 작성된 최초의 이맥스였다. 1978년, Bernard Greenberg는 Honeywell의 케임브리지 정보 시스템 연구소에서 Multics Emacs를 거의 전적으로 Multics Lisp로 작성했다. Multics Emacs는 나중에 NIL 프로젝트를 위해 NILE 이맥스 유사 편집기를 개발한 Richard Soley와 Barry Margolin에 의해 유지 관리되었다. GNU 이맥스를 포함한 많은 버전의 Emacs는 나중에 Lisp를 확장 언어로 채택했다.

Computer Corporation of America의 ''CCA EMACS'' (Steve Zimmerman)에 대한 초기 광고[28]는 1984년에 등장했다.[29] 1985년에는 GNU 이맥스가 출시되었을 때 비교에서 무료 대 $2,400가 언급되었다.[30]

리처드 스톨만은 1984년, 독점적인 Gosling Emacs의 자유 소프트웨어 대안을 만들기 위해 GNU 이맥스 작업을 시작했다. GNU Emacs는 초기에 Gosling Emacs를 기반으로 했지만, 스톨만이 Mocklisp 인터프리터를 진정한 Lisp 인터프리터로 교체하면서 거의 모든 코드를 다시 작성해야 했다. 이것이 갓 출범한 GNU 프로젝트에서 처음으로 배포된 프로그램이 되었다. GNU Emacs는 C로 작성되었으며 C로 구현된 확장 언어인 Emacs Lisp를 제공한다. 최초 공개 릴리스인 버전 13은 1985년 3월 20일에 출시되었다. GNU Emacs의 첫 번째 널리 배포된 버전은 1985년 후반에 출시된 버전 15.34였다. 초기 버전의 GNU Emacs는 C 코어의 버전을 나타내는 첫 번째 숫자를 사용하여 ''1.x.x''로 번호가 매겨졌다. 주요 번호가 변경되지 않을 것으로 예상되어 버전 1.12 이후 ''1''이 삭제되었고, 따라서 번호 매기기는 ''1''에서 ''13''으로 건너뛰었다.[31] 2014년 9월, GNU emacs-devel 메일링 리스트에서 GNU Emacs가 신속한 릴리스 전략을 채택하고 향후 버전 번호가 더 빠르게 증가할 것이라고 발표했다.[32]

마르쿠스 헤스는 1986년 그의 해킹 공격에서 GNU Emacs의 이메일 하위 시스템의 보안 결함을 악용하여 Unix 컴퓨터에 대한 슈퍼유저 접근 권한을 얻었다.[33]

GNU Emacs 기능의 대부분은 스크립트 언어인 Emacs Lisp를 통해 구현된다. GNU Emacs의 약 70%가 Emacs Lisp 확장 언어로 작성되었기 때문에[34] Emacs Lisp 인터프리터를 구현하는 C 코어만 포팅하면 된다.

GNU Emacs 개발은 1999년까지 비교적 닫혀 있었고, ''성당과 시장''에서 ''성당'' 개발 스타일의 예로 사용되었다. 그 이후 프로젝트는 공개 개발 메일링 리스트와 익명 CVS 접근 방식을 채택했다. 개발은 2008년까지 단일 CVS 트렁크에서 진행되었고, 이후 Bazaar DVCS로 전환되었다. 2014년 11월 11일, 개발은 Git으로 이전되었다.[35]

리처드 스톨만은 GNU Emacs의 주요 유지 관리자로 남아 있지만, 때때로 그 역할에서 물러났다. 슈테판 모니에와 충이동은 2008년부터 2015년까지 유지 관리자였다.[36][37] 존 위글리는 2015년 MIT에서 스톨만과의 만남 후 유지 관리자로 임명되었다.[38] 2014년 초 현재 GNU Emacs는 역사상 579명의 개별 커미터를 보유하고 있다.[39]

|thumb|XEmacs 21.5 on Linux ]]

루시드 이맥스(Lucid Emacs)는 초기 알파 버전의 GNU Emacs 19를 기반으로 1991년에 제이미 자윈스키(Jamie Zawinski)와 루시드 사(Lucid Inc.)의 다른 사람들에 의해 개발되었다. 자유 소프트웨어 개발에서 가장 잘 알려진 초기 분기 중 하나는 두 Emacs 버전의 코드베이스가 분기되고 별도의 개발 팀이 이를 단일 프로그램으로 다시 병합하려는 노력을 중단했을 때 발생했다.[40] 루시드 이맥스는 이후 XEmacs로 이름이 변경되었다.

이외에도, 다음과 같은 다양한 GNU Emacs의 포크들이 존재한다.

  • Aquamacs – GNU Emacs를 기반으로 하며, 애플 [매킨토시](macOS) 사용자 인터페이스와의 통합에 중점을 둔다.
  • 메도우(Meadow) – 마이크로소프트 윈도우용 일본어 버전[42]


과거에는 Emacs의 소형 버전을 제작하는 것을 목표로 하는 프로젝트가 많이 있었다. GNU Emacs는 처음에는 32비트 플랫 주소 공간과 최소 1 MiB의 RAM을 가진 컴퓨터를 대상으로 했다.[43]

다른 프로젝트는 Emacs를 Lisp의 다른 방언이나 완전히 다른 프로그래밍 언어로 구현하는 것을 목표로 한다. 모든 클론이 현재 활발하게 유지 관리되지는 않지만, 이러한 클론에는 다음이 포함된다.

  • MicroEMACS, 원래 Dave Conroy가 작성하고 Daniel Lawrence가 추가 개발했으며 다양한 변형이 존재합니다.
  • mg는 원래 MicroGNUEmacs, 이후 mg2a로 불렸으며, GNU Emacs와 더 유사하도록 만들어진 MicroEMACS의 퍼블릭 도메인 파생 제품이다. 현재 OpenBSD에 기본적으로 설치되어 있다.
  • JOVE (Jonathan's Own Version of Emacs)는 UNIX 계열 시스템용 Jonathan Payne의 프로그래밍 불가능한 Emacs 구현이다.
  • MINCE (MINCE Is Not Complete Emacs)는 CP/M 및 이후 DOS용 버전이며, Mark of the Unicorn에서 제작되었다.
  • Perfect Writer는 MINCE에서 파생된 CP/M 구현이다.
  • Freemacs는 텍스트 매크로 확장을 기반으로 하는 확장 언어를 사용하고 원래 64 KiB 플랫 메모리 제한 내에 맞는 DOS 버전이다.
  • Zmacs는 MIT Lisp 머신과 그 후손을 위해 ZetaLisp로 구현되었다.
  • Epsilon[45]은 Lugaru Software의 Emacs 클론이다.
  • PceEmacs는 SWI-Prolog용 Emacs 기반 편집기이다.
  • Hemlock는 원래 Spice Lisp로 작성되었으며, 이후 Common Lisp로 작성되었다.

3. 조작법

이맥스는 Ctrl, Alt, 알파벳 키 등을 조합한 키 바인딩(단축키)을 통해 조작한다. 키 바인딩은 사용자가 자유롭게 커스터마이즈할 수 있다.

대부분의 키보드에서 왼쪽 키가 누르기 불편한 위치에 있어 이맥스 조작이 불편하게 느껴질 수 있지만, 키와 키의 기능을 서로 바꾸거나, 의 기능을 없애고 키로 동작하게 바꿔서 사용하는 경우가 많다. 리눅스 사용자는 `setxkbmap`이나 `xmodmap` 등의 명령어를 써서 소프트웨어적으로 키보드 설정을 변경하며, 리얼포스 같은 프로그래밍용 키보드는 딥스위치를 통해 하드웨어적으로 설정할 수 있다.

이맥스는 많은 수의 명령어를 가지고 있으며, 작업을 수행하는 데 필요한 키 입력을 간결하게 표현하는 ''명령 언어''를 특징으로 한다. 이 명령 언어는 , , , , , 등의 수정 키를 인식하며, 각각 `C-`, `A-`, `S-`, `M-`, `s-`, `H-` 접두사로 표현된다.

키 바인딩이 존재하지 않는 명령어를 호출하거나, 기본 키 바인딩을 변경하거나, 키 바인딩을 삭제하는 것도 가능하다. 이맥스의 메이저/마이너 모드에 따라 같은 키 조합이라도 의미가 달라질 수 있다.

`C-h b`를 누르면 현재 사용 가능한 모든 키 바인딩 목록을, `C-h m`을 누르면 현재 모드와 키 바인딩 목록을 볼 수 있다. 원하는 명령 호출 키 조합 중 일부만 기억날 경우 `?`를 사용해 도움을 받을 수 있다. 예를 들어, `C-c ?`를 누르면 `C-c` 다음에 나올 수 있는 키 바인딩 목록이 표시된다.

사용자 작업은 매크로로 기록되어 복잡하고 반복적인 작업을 자동화하기 위해 재생할 수 있다. 매크로는 임시적으로 사용 후 삭제되거나, 저장하여 나중에 호출할 수 있다. 이맥스 기능이 이맥스 리스프(Emacs Lisp)를 기반으로 정의되기 때문에 매크로는 키 입력, 명령, 마우스 클릭, 다른 매크로 등을 포함할 수 있으며, 재귀적으로 매크로 내에서 정의 및 호출될 수 있다.

시작 시, 이맥스는 `~/.emacs`라는 이맥스 리스프(Emacs Lisp) 스크립트를 실행한다(최신 버전은 `~/.emacs.el`, `~/.emacs.d/init.el`, `~/.config/emacs/init.el`도 찾음).[49] 이 파일은 이맥스 동작을 사용자 정의하기 위한 전역 변수 설정, 함수 호출, 키 바인딩 재정의, 확장 기능 로드 및 초기화, 이벤트 훅 설정, 임의의 파일 실행 등을 포함할 수 있다.

`customize` 확장을 사용하면 사용자 친화적인 방식으로 이맥스 내에서 구성 속성을 설정할 수 있으며, 사용자 정의된 값은 `~/.emacs` 등에 자동으로 저장된다. 글꼴과 색상 선택에 영향을 미치는 ''테마''는 이맥스 리스프(Emacs Lisp) 파일로 정의되며 `customize` 확장을 통해 선택된다.

코드 강조를 위한 글꼴 변경 및 키 바인딩 수정을 통해 다양한 프로그래밍 언어 편집을 지원하는 ''모드''가 있다.

최초의 이맥스에는 모든 명령, 변수 및 내부 함수에 대한 설명서가 포함된 ''도움말'' 라이브러리가 포함되어 있었다. 각 함수에는 설명 문자열이 포함되어 있으며, 이는 Lisp, Java, Perl, Python 등 다른 프로그래밍 언어로 확산된 관행이다. 이 도움말 시스템은 내장 라이브러리나 추가된 타사 라이브러리에서 각 함수의 실제 코드로 사용자를 안내할 수 있다.

이맥스에는 내장 튜토리얼이 있으며, 편집할 파일 없이 실행될 때 튜토리얼 호출 지침을 표시한다. 튜토리얼은 스튜어트 크래프트와 리처드 스톨먼이 만들었다.

4. GUI 환경

이맥스는 원래 텍스트 단말기에서 쓰도록 설계되었지만, X 윈도 시스템, macOS, 윈도우 등 다양한 그래픽 사용자 인터페이스(GUI) 환경을 지원한다.[40]

Epoch은 GNU 이맥스 버전 18을 기반으로 하여 마우스를 사용하는 X 윈도 시스템의 다중 윈도 기능에 대응시킨 것이다. Lucid Emacs는 이맥스 버전 19를 기본으로 해 고도의 GUI에 대응시킨 것으로서 Lucid 사가 개발하였다. GNU 이맥스도 서서히 GUI에 대응해 갔지만, 그 개발 속도가 너무나도 느리다는 불만을 가진 팀이 Lucid Emacs를 기본으로 하여 XEmacs 프로젝트를 시작하였다.[90] XEmacs와 구분하기 위해 원래의 GNU 이맥스를 FSF 이맥스라고 부르기도 한다. 이것은 XEmacs도 GPL을 따르므로 GNU 이맥스로 부를 수 있기 때문이다.

이맥스 버전 21, XEmacs는 그래픽 기능이 강화되었고, 버퍼 안에 다양한 크기나 스타일의 글꼴을 함께 쓸 수 있다.

루시드 이맥스(Lucid Emacs)는 초기 알파 버전의 GNU Emacs 19를 기반으로 1991년에 제이미 자윈스키(Jamie Zawinski)와 루시드 사(Lucid Inc.)의 다른 사람들에 의해 개발되었다. 자유 소프트웨어 개발에서 가장 잘 알려진 초기 분기 중 하나는 두 Emacs 버전의 코드베이스가 분기되고 별도의 개발 팀이 이를 단일 프로그램으로 다시 병합하려는 노력을 중단했을 때 발생했다. 루시드 이맥스는 이후 XEmacs로 이름이 변경되었다. 현재 개발이 중단되었으며, 가장 최근의 안정 버전은 2009년 1월에 출시된 21.4.22(베타 버전은 2013년에 출시)인 반면, GNU Emacs는 이전에 XEmacs에서만 사용 가능했던 많은 기능을 구현했다.[41]

이맥스는 그래픽 사용자 인터페이스에 대한 현대적인 표준 용어보다 먼저 개발되었기 때문에 친숙한 인터페이스 요소에 대해 다소 다른 이름을 사용한다. 이맥스 사용자가 상호 작용하는 데이터인 버퍼는 터미널 화면 또는 GUI 창의 타일링된 부분인 ''창'' 안에 사용자에게 표시된다. 이맥스는 이를 ''프레임''이라고 부릅니다. 현대 용어로 이맥스 ''프레임''은 창이고 이맥스 ''창''은 분할이다. 구성에 따라 창에는 자체 스크롤 막대, 줄 번호, 때로는 일반적으로 탐색을 용이하게 하기 위한 '헤더 줄'과 하단에 ''모드 줄''(일반적으로 버퍼 이름, 활성 모드 및 버퍼의 위치 등을 표시)을 포함할 수 있다. 모든 프레임의 하단은 출력 메시지('에코 영역'이라고 함)와 명령에 대한 텍스트 입력('미니버퍼'라고 함)에 사용된다.

일반적으로 이맥스 디스플레이 요소(창, 프레임 등)는 특정 데이터 또는 프로세스에 속하지 않는다. 버퍼는 창과 연결되어 있지 않으며, 예를 들어 스크롤을 앞뒤로 이동하지 않고 긴 텍스트의 다른 부분을 나란히 추적하기 위해 여러 창을 동일한 버퍼에 열 수 있으며, 여러 버퍼가 동일한 텍스트를 공유하여 혼합 언어 파일에서 다른 주요 모드를 활용할 수 있다. 마찬가지로, 이맥스 인스턴스는 특정 프레임과 연결되어 있지 않으며, 단일 실행 이맥스 프로세스를 표시하는 여러 프레임을 열 수 있다. 예를 들어, 다중 모니터 설정의 화면당 하나의 프레임, 또는 원격 시스템에서 ssh를 통해 연결된 터미널 프레임과 로컬 시스템의 모니터를 통해 동일한 이맥스 프로세스를 표시하는 그래픽 프레임이 있다.

버퍼가 창을 필요로 하지 않는 것처럼, 실행 중인 이맥스 프로세스는 프레임을 필요로 하지 않으며, 일반적인 사용 패턴 중 하나는 이맥스를 ''편집 서버''로 배포하는 것이다. 즉, 헤드리스 데몬으로 실행하고 프레임 생성 클라이언트를 통해 연결하는 것이다. 그런 다음 이 서버는 편집기가 필요한 모든 상황에서 사용 가능하게 만들 수 있다. 단순히 클라이언트 프로그램을 사용자의 EDITOR 또는 VISUAL 변수로 선언하면 된다. 이러한 서버는 백그라운드에서 계속 실행되어 모든 자식 프로세스를 관리하고, 열린 파이프, 포트 또는 피포에서 stdin을 축적하고, 주기적이거나 미리 프로그래밍된 작업을 수행하며, 편집 세션 간에 버퍼 실행 취소 기록, 저장된 텍스트 조각, 명령 기록 및 기타 사용자 상태를 기억합니다. 이러한 작동 모드에서 이맥스는 screen 및 tmux와 같은 프로그램의 기능을 중복한다.

편집 기능에서 디스플레이 문제를 분리했기 때문에 이맥스는 덤 터미널보다 더 복잡한 모든 장치에서 거의 유사하게 표시할 수 있으며, 충분한 기능을 갖춘 텍스트 터미널에서 일반적인 그래픽 WIMP 요소를 제공한다. 그러나 그래픽 프레임이 선호되는 디스플레이 모드이며 텍스트 터미널 프레임의 기능을 엄격하게 상위 집합으로 제공한다.

5. 응용 프로그램 실행 환경으로서의 이맥스

이맥스는 텍스트 편집 기능 외에도 다양한 응용 프로그램을 실행할 수 있는 환경을 제공한다. 그 핵심에는 Emacs Lisp 인터프리터가 있으며, 이는 완전한 프로그래밍 언어인 Emacs Lisp를 통해 구현된다. 이맥스는 REPL(Read Eval Print Loop)을 제공하여 사용자가 심볼을 평가하고, 값을 덮어쓰거나 함수를 재정의할 수 있게 한다.

Emacs Lisp는 TCP/IP 통신, 외부 프로세스 실행, 파일 입출력 등의 기능을 구현할 수 있어, 메일 클라이언트 (mu4e, Wanderlust, Gnus), 웹 브라우저(Emacs W3), IRC 클라이언트 (erc), 자바 통합 개발 환경(JDEE), 파이썬 개발 환경 (elpy) 등 다양한 기능을 이맥스 내에서 사용할 수 있다.

이맥스는 기본적으로 텍스트 편집기이지만, LaTeX, Ghostscript 또는 웹 브라우저와 같은 외부 프로그램과 연동하여 워드 프로세서처럼 문서를 서식 지정하고 인쇄할 수 있다. 또한, 단어, 문장, 문단, 소스 코드 구조체 (예: 함수)와 같은 텍스트의 의미 단위를 조작하고 차등적으로 표시하는 명령어를 제공하며, 사용자 정의 일괄 편집 명령어를 수행하기 위한 '키보드 매크로' 기능도 제공한다.

GNU Emacs는 편집 내용이 화면에 실시간으로 표시되는 '실시간 디스플레이' 편집기이며, 이는 현대 텍스트 편집기의 표준 동작이지만, 이맥스가 최초로 구현한 기능 중 하나였다. 거의 모든 기능은 함수를 통해 구현되며, Lisp 프로그래밍 언어의 방언인 Emacs Lisp로 작성된다. Emacs Lisp는 C 프로그래밍 언어로 작성된 기본 서비스 및 플랫폼 추상화 코어 위에 위치하며, 변수와 함수는 Emacs를 다시 빌드하거나 재시작할 필요 없이 수정할 수 있다.

Emacs의 개방형 설계 목표는 Emacs 사용자가 일반적인 사용 중에 Emacs의 내부를 Emacs 개발자가 git 트리에서 작업하는 방식과 동일하게 투명하게 노출하고, Emacs 사용과 Emacs 프로그래밍 간의 구분을 가능한 한 줄이는 동시에 초보 사용자를 위한 안정적이고 실용적이며 응답성이 뛰어난 편집 환경을 제공하는 것이다.

주요 텍스트 편집 자료 구조는 연결된 속성이 있는 데이터(일반적으로 텍스트)를 포함하는 메모리 영역인 ''버퍼''이다. 버퍼는 ''포인트''(편집 커서), ''마크''(포인트와 함께 선택을 가능하게 하는 설정 가능한 위치), ''영역''(편집 명령이 적용될 개념적으로 연속된 텍스트 모음), 방문 중인 파일의 이름과 inode, 기본 작업 디렉토리, ''모드''(주요 모드와 여러 보조 모드), ''버퍼 인코딩'', 다양한 ''버퍼 지역 변수''와 Emacs Lisp 상태를 포함한다.

''모드''는 Emacs의 기능을 특정 버퍼의 데이터와 관련된 동작 및 키 바인딩 집합으로 분리하는 메커니즘을 제공한다. ''주요 모드''는 버퍼의 데이터와 사용자가 상호 작용하는 방식과 관련된 일반적인 기능 및 명령 패키지를 제공하며, ''보조 모드''는 여러 주요 모드에 적용할 수 있는 기능의 보조 집합을 정의한다.

키 누름이나 마우스 버튼 클릭과 같은 편집기와의 모든 상호 작용은 ''명령''인 Emacs Lisp 코드를 평가하여 실현된다. 키는 임의로 재정의할 수 있으며 명령은 이름으로도 액세스할 수 있다. 일부 명령은 사용자가 제공한 임의의 Emacs Lisp 코드를 평가한다. 가장 간단한 사용자 입력(예: 인쇄 가능한 문자)도 Emacs Lisp 함수로 구현된다.

사용자 작업은 매크로로 기록되어 복잡하고 반복적인 작업을 자동화하기 위해 재생할 수 있다. 시작 시, 이맥스는 `~/.emacs`라는 Emacs Lisp 스크립트를 실행한다.[49] 이 파일은 Emacs 동작을 사용자 정의하기 위해 전역 변수를 설정하거나 함수를 호출하고, 표준 단축키를 재정의하고, 확장 기능을 로드, 활성화 및 초기화하고, 이벤트 후크를 구성하고, 임의의 파일을 실행하는 데 사용될 수 있다.

`customize` 확장을 사용하면 사용자는 색상 구성표와 같은 구성 속성을 설정할 수 있으며, 사용자 지정된 값은 `~/.emacs`에 자동으로 저장된다. 글꼴과 색상 선택에 영향을 미치는 ''테마''는 Emacs Lisp 파일로 정의되며 customize 확장을 통해 선택된다.

vi가 편집을 위한 기본적인 기능만 탑재했던 것에 비해, Emacs는 점진적 검색, 무제한 실행 취소, 양크(붙여넣기)용 스택, 다중 버퍼, 버퍼에서 셸 실행, 자동 완성, 언어별 모드 등, 에디터로서 생각할 수 있는 모든 기능을 담고 있다.

6. 이맥스의 문제점

vi 등에 비해 시작 속도가 느리다. 하지만 Emacs는 켜둔 채로 사용하는 것이 가능하며, 긴 시작 시간은 문제가 되지 않는다는 반론도 있다.

Emacs에서는 파일 관리자나 옵션 설정 화면도 일반적인 에디터 화면과 동일한 조작이 가능하다는 특징이 있지만, 다이얼로그 박스 등을 사용한 GUI에 익숙한 사용자에게는 이러한 UI가 익숙하지 않다.

커스터마이징 가능한 기능의 수가 극단적으로 많아 무엇을 설정해야 할지 알기 어렵다.

Emacs Lisp에 의해 확장 기능을 만들기 쉽기 때문에, 유사한 기능을 구현한 다수의 구현체가 난립하기 쉽다.

==== 사용성 ====

통합된 인터페이스는 초보 사용자에게 낯설 수 있다. 다양한 모드들을 동일한 인터페이스로 통합한 것은 기존 사용자에게는 장점이지만, 처음 사용하는 사람에게는 익숙하지 않기 때문이다. 예를 들어, 이맥스 메일러에서 검색은 일반 텍스트 문서에서 검색하는 것과 비슷한 방식과 단축키를 이용하지만, 초보자에게는 아웃룩 익스프레스와 같은 메일 클라이언트의 설정 메뉴를 사용한 검색보다 어려울 수 있다.

이맥스의 설정은 일반적인 GUI 응용 프로그램들의 설정 방식과 비교하면 직관적이지 않다. M-x customize와 같은 설정 인터페이스를 제공하지만, 설정 항목이 편집기 안으로 들어가 버리는 인터페이스는 기존 사용자에게는 장점이지만 초보자들에게 익숙하지 않을 수 있다. 심지어 설정 파일을 직접 편집해야만 설정할 수 있는 항목도 많으며, 이 설정 파일은 이맥스 리스프(Emacs Lisp) 코드 자체이다. 따라서 설정을 위해 프로그래밍 언어인 이맥스 리스프를 익혀야 하는 상황은 에디터만을 사용하고 싶은 사용자에게는 진입 장벽이 될 수 있다.

과거에는 이맥스가 화살표 키를 사용하지 않아 초보자에게 어려움이 있었으나, 현재는 화살표 키를 기본으로 사용할 수 있게 개선되었다. Vi처럼 모드가 구분되지 않아 메모장과 비슷하게 사용할 수 있다는 점은 이제 큰 문제가 되지 않을 수 있다.

사용자 작업은 매크로로 기록되어 복잡하고 반복적인 작업을 자동화할 수 있다. 매크로는 임시적으로 수행하고 삭제할 수 있으며, 저장하여 나중에 호출할 수도 있다. 이맥스 기능이 이맥스 리스프를 기반으로 정의되기 때문에 매크로는 키 입력, 명령, 마우스 클릭, 다른 매크로 등 다양한 작업을 포함할 수 있으며, 재귀적으로 매크로 내에서 정의하고 호출할 수도 있다.

시작 시, 이맥스는 `~/.emacs`라는 이맥스 리스프 스크립트를 실행한다. 최신 버전은 `~/emacs.el`, `~/.emacs.d/init.el`, `~/.config/emacs/init.el`도 찾는다.[49] `~/.config/emacs/early-init.el`의 유사한 변형도 마찬가지이다.[50] 이 개인화 파일은 임의로 길고 복잡할 수 있지만, 일반적으로 다음과 같은 내용을 포함한다.


  • 이맥스 동작을 사용자 정의하기 위해 전역 변수를 설정하거나 함수를 호출.
  • 표준 단축키를 재정의하고 사용자가 편리하다고 생각하는 명령에 대한 단축키를 추가.
  • 확장 기능 로드, 활성화 및 초기화.
  • 특정 시간에 임의의 코드를 실행하도록 ''이벤트 후크''를 구성.
  • 임의의 파일 실행.


`customize` 확장을 사용하면 사용자는 이맥스 내에서 대화식으로 색상 구성표와 같은 구성 속성을 설정할 수 있다. 사용자 지정된 값은 `~/.emacs`에 자동으로 저장된다. 글꼴과 색상 선택에 영향을 미치는 ''테마''는 이맥스 리스프 파일로 정의되며 customize 확장을 통해 선택된다. 다양한 프로그래밍 언어 편집을 지원하는 ''모드''를 통해 코드 강조를 위한 글꼴 변경 및 키 바인딩 수정이가능하다.

==== 기타 문제점 ====

이맥스는 Lisp 기반 설계로 인해 Lisp 코드 읽기와 해석에 따른 성능 부담이 있었다.[120][121] 초기 구현 당시 경쟁 텍스트 편집기보다 상당히 느려, EMACS 머리글자를 이용한 다음과 같은 농담도 있었다.

  • Eight Megabytes And Constantly Swapping (8MB로 자주 스왑 - 8MB 메모리가 컸던 시절의 이야기)
  • Emacs Makes A Computer Slow (Emacs는 컴퓨터를 느리게 만든다)
  • Eventually Mallocs All Computer Storage (결국 컴퓨터의 모든 저장 장치를 malloc한다)
  • Eventually Makes All Computers Sick (결국 모든 컴퓨터를 병들게 한다)


하지만 최근 컴퓨터 성능 향상으로 인해 예전처럼 이맥스가 느리다고 느껴지는 경우는 드물며, 최신 워드 프로세서보다 빠르게 시작하는 경우가 많다. GNU Emacs 23 이후에는 이맥스를 서버 프로그램으로 띄워놓는 데몬 모드가 추가되어, 이맥스 본체가 OS 시작 시 자동으로 한 번만 기동되므로 속도 문제는 더 이상 발생하지 않는다.

6. 1. 사용성

통합된 인터페이스는 초보 사용자에게 낯설 수 있다. 다양한 모드들을 동일한 인터페이스로 통합한 것은 기존 사용자에게는 장점이지만, 처음 사용하는 사람에게는 익숙하지 않기 때문이다. 예를 들어, 이맥스 메일러에서 검색은 일반 텍스트 문서에서 검색하는 것과 비슷한 방식과 단축키를 이용하지만, 초보자에게는 아웃룩 익스프레스와 같은 메일 클라이언트의 설정 메뉴를 사용한 검색보다 어려울 수 있다.

이맥스의 설정은 일반적인 GUI 응용 프로그램들의 설정 방식과 비교하면 직관적이지 않다. M-x customize와 같은 설정 인터페이스를 제공하지만, 설정 항목이 편집기 안으로 들어가 버리는 인터페이스는 기존 사용자에게는 장점이지만 초보자들에게 익숙하지 않을 수 있다. 심지어 설정 파일을 직접 편집해야만 설정할 수 있는 항목도 많으며, 이 설정 파일은 이맥스 리스프(Emacs Lisp) 코드 자체이다. 따라서 설정을 위해 프로그래밍 언어인 이맥스 리스프를 익혀야 하는 상황은 에디터만을 사용하고 싶은 사용자에게는 진입 장벽이 될 수 있다.

과거에는 이맥스가 화살표 키를 사용하지 않아 초보자에게 어려움이 있었으나, 현재는 화살표 키를 기본으로 사용할 수 있게 개선되었다. Vi처럼 모드가 구분되지 않아 메모장과 비슷하게 사용할 수 있다는 점은 이제 큰 문제가 되지 않을 수 있다.

사용자 작업은 매크로로 기록되어 복잡하고 반복적인 작업을 자동화할 수 있다. 매크로는 임시적으로 수행하고 삭제할 수 있으며, 저장하여 나중에 호출할 수도 있다. 이맥스 기능이 이맥스 리스프를 기반으로 정의되기 때문에 매크로는 키 입력, 명령, 마우스 클릭, 다른 매크로 등 다양한 작업을 포함할 수 있으며, 재귀적으로 매크로 내에서 정의하고 호출할 수도 있다.

시작 시, 이맥스는 `~/.emacs`라는 이맥스 리스프 스크립트를 실행한다. 최신 버전은 `~/emacs.el`, `~/.emacs.d/init.el`, `~/.config/emacs/init.el`도 찾는다.[49] `~/.config/emacs/early-init.el`의 유사한 변형도 마찬가지이다.[50] 이 개인화 파일은 임의로 길고 복잡할 수 있지만, 일반적으로 다음과 같은 내용을 포함한다.

  • 이맥스 동작을 사용자 정의하기 위해 전역 변수를 설정하거나 함수를 호출.
  • 표준 단축키를 재정의하고 사용자가 편리하다고 생각하는 명령에 대한 단축키를 추가.
  • 확장 기능 로드, 활성화 및 초기화.
  • 특정 시간에 임의의 코드를 실행하도록 ''이벤트 후크''를 구성.
  • 임의의 파일 실행.


`customize` 확장을 사용하면 사용자는 이맥스 내에서 대화식으로 색상 구성표와 같은 구성 속성을 설정할 수 있다. 사용자 지정된 값은 `~/.emacs`에 자동으로 저장된다. 글꼴과 색상 선택에 영향을 미치는 ''테마''는 이맥스 리스프 파일로 정의되며 customize 확장을 통해 선택된다. 다양한 프로그래밍 언어 편집을 지원하는 ''모드''를 통해 코드 강조를 위한 글꼴 변경 및 키 바인딩 수정이가능하다.

6. 2. 기타 문제점

이맥스는 Lisp 기반 설계로 인해 Lisp 코드 읽기와 해석에 따른 성능 부담이 있었다.[120][121] 초기 구현 당시 경쟁 텍스트 편집기보다 상당히 느려, EMACS 머리글자를 이용한 다음과 같은 농담도 있었다.

  • Eight Megabytes And Constantly Swapping (8MB로 자주 스왑 - 8MB 메모리가 컸던 시절의 이야기)
  • Emacs Makes A Computer Slow (Emacs는 컴퓨터를 느리게 만든다)
  • Eventually Mallocs All Computer Storage (결국 컴퓨터의 모든 저장 장치를 malloc한다)
  • Eventually Makes All Computers Sick (결국 모든 컴퓨터를 병들게 한다)


하지만 최근 컴퓨터 성능 향상으로 인해 예전처럼 이맥스가 느리다고 느껴지는 경우는 드물며, 최신 워드 프로세서보다 빠르게 시작하는 경우가 많다. GNU Emacs 23 이후에는 이맥스를 서버 프로그램으로 띄워놓는 데몬 모드가 추가되어, 이맥스 본체가 OS 시작 시 자동으로 한 번만 기동되므로 속도 문제는 더 이상 발생하지 않는다.

7. 이맥스 문화

7. 1. 이맥스 교회

리처드 스톨만이 설립한 ''이맥스 교회''(Church of Emacs)는 이맥스 사용자를 위해 만들어진 패러디 종교이다.[51] 이 교회는 vi를 "짐승의 편집기"(vi-vi-vi는 로마 숫자로 6-6-6에 해당)라고 부르지만, vi의 사용을 반대하지는 않는다. 오히려, vi를 독점 소프트웨어 저주라고 칭한다. ("vi의 자유 버전을 사용하는 것은 죄가 아니라 속죄이다."[52]) 이맥스 교회는 자체 뉴스 그룹인 alt.religion.emacs를 가지고 있으며,[53] 이 패러디 종교를 지지하는 게시물을 올리고 있다. vi 지지자들은 이에 대항하여 'vi 컬트'를 만들었다.

스톨만은 농담으로 자신을 이맥스 교회의 성인인 ''성 이그누시우스''(성 이그누시우스/St IGNUcius영어)라고 불렀다.[54] 이는 기독교에서 존경받는 초기 교부인 안티오키아의 이그나티우스를 인용한 것이다.

''Emacs 교회''(Church of Emacs)의 성인, St IGNUcius로서의 리처드 스톨만

7. 2. Emacs 새끼손가락

이맥스의 수식키에 대한 의존성은 반복성 긴장 장애를 유발할 수 있다는 속설이 있으며, 이는 ''Emacs 새끼손가락''(Emacs pinky)이라고 불린다.[110]

Emacs 새끼손가락 문제에 대처하기 위해 사용자들은 다양한 방법을 사용한다. 소프트웨어적인 해결 방법으로는 CapsLock 키를 컨트롤 키 대신 사용하도록 키 레이아웃을 커스터마이징하는 방법,[112] Xwrits나 내장된 `type-break-mode`와 같이 정기적으로 휴식을 취하도록 알리는 소프트웨어를 설치하는 방법 등이 있다.[111] 또한, `ace-jump-mode`[113]와 같이 먼저 문자를 묻고 커서 이동에 따라 해당 문자가 나타나도록 액세스 키를 사용하는 패키지나, Vim 에뮬레이션 계층인 `evil-mode`, 또는 Vim처럼 수식 키 없이 Emacs 명령어를 입력하기 위한 모드 방식인 `god-mode`를 사용할 수도 있다. Spacemacs는 제어 시퀀스에 스페이스 키를 주요 키로 사용하며, `evil-mode`와 `god-mode`를 통합하고 있다.[114] 고정 키/Sticky keys영어 기능을 사용하여 키 조합의 키 시퀀스를 변경하거나,[115] Emacs 내장 `viper-mode`를 사용하여 기본적인 텍스트 편집 및 고급 기능을 위한 Emacs 스키마에서 vi 키 레이아웃을 사용할 수도 있다.[116] 스페이스 키와 같이 접근하기 쉬운 키에 다른 역할을 부여하고, 이 키를 다른 키와 조합하여 누르면 컨트롤 키로 작동하도록 할 수도 있다.

하드웨어적인 해결책으로는 Kinesis Contoured Keyboard와 같이 수식 키를 엄지손가락으로 쉽게 조작할 수 있는 인체공학 키보드나, 손바닥으로 누를 수 있는 큰 수식 키가 배치된 Microsoft Natural keyboard/Microsoft Natural keyboard영어를 사용하는 방법이 있다.[110] 풋 페달도 사용 가능하다.

스페이스 카데트 키보드는 이맥스가 개발된 환경으로, 스페이스 키에 인접한 컨트롤 키가 크고 엄지손가락으로 쉽게 닿을 수 있었다.[118]

8. 용어

영어에서 "emacs"라는 단어는 때때로 여러 종류의 이맥스를 지칭하며, boxen과 VAXen과 음성적으로 유사하게 "emacsen"으로 복수형을 사용하기도 한다.[55] ''emacs''라는 단어의 복수형을 ''emacsen''이라고 표기하는 경우도 있다[119]

참조

[1] 서적 Multics Emacs: The History, Design and Implementation http://www.multician[...]
[2] 웹사이트 GNU Emacs FAQ https://www.gnu.org/[...]
[3] 웹사이트 MACSimizing TECO https://web.archive.[...] 2012-02-26
[4] 웹사이트 A Tutorial Introduction to GNU Emacs http://www2.lib.uchi[...]
[5] 웹사이트 GNU Emacs Pocket Reference https://ebooks-it.or[...]
[6] 웹사이트 GNU Emacs Manual https://www.gnu.org/[...] FSF 2012-11-24
[7] 웹사이트 Emacs Timeline https://www.jwz.org/[...] 2007-10-29
[8] 웹사이트 On the Origin of Emacs in 1976 (Emacs blog articles) https://onlisp.co.uk[...] 2024-07-24
[9] 웹사이트 Tramp User Manual https://www.gnu.org/[...] Free Software Foundation 2009-04-04
[10] 웹사이트 Introducing Elfeed, an Emacs Web Feed Reader http://nullprogram.c[...]
[11] 웹사이트 Collaborative editing using Conflict-free Replicated Data Types https://code.librehq[...]
[12] 웹사이트 Amusements https://www.gnu.org/[...]
[13] 웹사이트 Emacs Timeline http://www.jwz.org/d[...] 2005-06-21
[14] citation Rebuttal to Stallman's Story About The Formation of Symbolics and LMI http://danweinreb.or[...] 2007-11-11
[15] 웹사이트 A history of Emacs http://www.xemacs.or[...] 2006-12-11
[16] 웹사이트 Debian Popularity Contest http://popcon.debian[...] Debian 2011-11-22
[17] 웹사이트 The 10 oldest, significant open-source programs https://www.zdnet.co[...]
[18] 서적 Learning GNU Emacs, 2nd Edition https://books.google[...] O'Reilly
[19] 서적 Free as in Freedom: Richard Stallman's Crusade for Free Software https://books.google[...] O'Reilly Media 2002
[20] 웹사이트 Essential E http://i.stanford.ed[...] 1980-03
[21] 웹사이트 EMACS vs. vi: The endless geek 'holy war' https://web.archive.[...] 2014-05-30
[22] 뉴스 The EMACS Full-Screen Editor http://www.lysator.l[...] Lysator, Linköping University 2007-09-14
[23] 웹사이트 The Emac Bolio Name Koan https://web.archive.[...] 1992-02-10
[24] 간행물 EMACS: The Extensible, Customizable, Self-Documenting, Display Editor http://dspace.mit.ed[...] 1981-03-26
[25] 뉴스 email quoted in "Be Careful What You Joke About" http://pogue.blogs.n[...] 2010-05-01
[26] 웹사이트 Comment by ZWEI's author Dan Weinreb http://steve-yegge.b[...]
[27] 웹사이트 The Design and Implementation of a Display-Oriented Editor Writing System http://dspace.mit.ed[...] 1979-01
[28] 서적 Making and Unmaking Intellectual Property
[29] 웹사이트 Emacs http://www.softwarep[...] 2017-12-17
[30] 웹사이트 Differences between GNU Emacs and CCA Emacs http://www.retro11.d[...]
[31] 웹사이트 A History of Emacs http://www.xemacs.or[...]
[32] 웹사이트 emacs-devel msg 00872 (2014-09-29) http://lists.gnu.org[...]
[33] 간행물 Stalking the wily hacker
[34] 웹사이트 GNU Emacs https://www.openhub.[...] Open Hub 2017-11-25
[35] 웹사이트 New Git repository is up http://lists.gnu.org[...] 2017-11-25
[36] 웹사이트 Re: Looking for a new Emacs maintainer or team http://lists.gnu.org[...] gnu.org Mailing List 2008-02-22
[37] 뉴스 Stallman on handing over GNU Emacs, its future and the importance of nomenclature http://www.networkwo[...] 2008-02-25
[38] 뉴스 Emacs gets new maintainer as Richard Stallman signs off https://www.theregis[...] 2015-11-05
[39] 웹사이트 Ugliest…repository…conversion…ever http://esr.ibiblio.o[...] 2014-03-29
[40] 웹사이트 XEmacs vs. GNU Emacs http://www.xemacs.or[...]
[41] 웹사이트 XEmacs is Dead. Long Live XEmacs! http://steve-yegge.b[...]
[42] 웹사이트 FrontPage - Meadow Wiki https://web.archive.[...] 2012-02-16
[43] 웹사이트 My Lisp Experiences and the Development of GNU Emacs https://www.gnu.org/[...]
[44] 웹사이트 GNU Zile (Zile is Lossy Emacs) - Summary https://savannah.gnu[...]
[45] 웹사이트 Lugaru Software Homepage http://www.lugaru.co[...]
[46] 웹사이트 Cocoa text system https://www.hcs.harv[...]
[47] 웹사이트 Setting up keybindings for the Command Window and Editor https://blogs.mathwo[...] 2007-05-11
[48] 서적 The KornShell Command and Programming Language https://archive.org/[...] Prentice Hall
[49] 웹사이트 Init file https://www.gnu.org/[...]
[50] 웹사이트 Early Init file https://www.gnu.org/[...]
[51] 웹사이트 Saint IGNUcius - Richard Stallman http://stallman.org/[...] 2015-01-29
[52] 웹사이트 The unabridged selective transcript of Richard M Stallman's talk at the ANU http://linuxhelp.blo[...] 2015-01-29
[53] 뉴스그룹 alt.religion.emacs newsgroup news:alt.religion.em[...]
[54] 웹사이트 Saint IGNUcius - Richard Stallman http://www.stallman.[...] 2018-03-27
[55] 웹사이트 VAXen http://www.catb.org/[...] Catb.org 2009-11-08
[56] 웹사이트 /EmacsReleaseDates https://www.emacswik[...] 2017-11-01
[57] 웹사이트 Emacs Timeline http://www.jwz.org/d[...] 2015-08-11
[58] 웹사이트 A Tutorial Introduction to GNU Emacs http://www2.lib.uchi[...] 2017-05-15
[59] 웹사이트 GNU Emacs Pocket Reference https://ebooks-it.or[...] 2017-11-01
[60] 웹사이트 最初の声明 https://www.gnu.org/[...] FSF 2023-09-27
[61] 웹사이트 Initial Announcement https://www.gnu.org/[...] FSF 2023-09-27
[62] 웹사이트 GNU Emacs Manual https://www.gnu.org/[...] FSF 2012-11-24
[63] 웹사이트 Introducing Elfeed, an Emacs Web Feed Reader http://nullprogram.c[...] 2016-06-12
[64] 웹사이트 Amusements https://www.gnu.org/[...] 2017-11-01
[65] 웹사이트 A Guided Tour of Emacs http://www.gnu.org/s[...] 2016-06-12
[66] 서적 Multics Emacs: The History, Design and Implementation http://www.multician[...] ~ 2016-06-12
[67] 웹사이트 GNU Emacs FAQ https://www.gnu.org/[...] 2016-06-12
[68] 웹사이트 MACSimizing TECO http://www.codeartno[...] 2016-06-12
[69] 인용 Rebuttal to Stallman’s Story About The Formation of Symbolics and LMI http://danweinreb.or[...] November 11, 2007
[70] 웹사이트 A history of Emacs http://www.xemacs.or[...] 2007-08-22
[71] 웹사이트 Debian Popularity Contest http://popcon.debian[...] Debian 2011-11-22
[72] 웹사이트 The 10 oldest, significant open-source programs http://www.zdnet.com[...] 2017-11-01
[73] 서적 Learning GNU Emacs, 2nd Edition https://books.google[...] O'Reilly
[74] 웹사이트 Essential E ftp://reports.stanfo[...] 2011-08-01
[75] 웹사이트 EMACS vs. vi: The endless geek 'holy war' http://archive09.lin[...] 2016-06-12
[76] 뉴스 The EMACS Full-Screen Editor http://www.lysator.l[...] Lysator, Linköping University 2007-09-14
[77] 웹사이트 The Emac Bolio Name Koan http://www.csd.uwo.c[...] 2016-06-12
[78] 간행물 EMACS: The Extensible, Customizable, Self-Documenting, Display Editor https://hdl.handle.n[...] 2022-06-07
[79] 뉴스 email quoted in "Be Careful What You Joke About" http://pogue.blogs.n[...] 2010-05-01
[80] 웹사이트 Comment by ZWEI's author Dan Weinreb http://steve-yegge.b[...] 2016-06-12
[81] 웹사이트 RMS Lecture at KTH: Japanese http://www.gnu.org/p[...]
[82] 문서 プロプライエタリソフトウェアとは、[[ソースコード]]が公開されていないソフトウェアで、プログラムを自由に配布や改変、逆コンパイルをすることができないものを指す用語である。
[83] 웹사이트 A History of Emacs http://www.xemacs.or[...] 2016-06-12
[84] 웹사이트 emacs-devel msg 00872 (2014-09-29) http://lists.gnu.org[...] 2016-06-12
[85] 논문 Stalking the wily hacker 2016-06-12
[86] 웹사이트 New Git repository is up. http://lists.gnu.org[...] 2016-06-12
[87] 웹사이트 Re: Looking for a new Emacs maintainer or team http://lists.gnu.org[...] gnu.org Mailing List 2008-02-23
[88] 웹사이트 Emacs gets new maintainer as Richard Stallman signs off https://www.theregis[...] 2017-11-01
[89] 웹사이트 Ugliest…repository…conversion…ever http://esr.ibiblio.o[...] 2016-06-12
[90] 웹사이트 XEmacs vs. GNU Emacs http://www.xemacs.or[...] 2012-10-02
[91] 웹사이트 XEmacs is Dead. Long Live XEmacs! https://steve-yegge.[...] 2016-06-12
[92] 웹사이트 FrontPage - Meadow Wiki http://www.meadowy.o[...]
[93] 웹사이트 SXEmacs Website http://www.sxemacs.o[...] Sxemacs.org 2009-11-08
[94] 웹사이트 http://www.stifflog.[...]
[95] 웹사이트 NotGNU Emacs Editor (Author's Official Download Site) http://www.notgnu.or[...] Notgnu.org 2009-11-08
[96] 웹사이트 Zile home page https://www.gnu.org/[...] 2016-06-20
[97] 웹사이트 QEmacs Homepage http://bellard.org/q[...] Fabrice.bellard.free.fr 2009-11-08
[98] 웹사이트 EmACT on sourceforge http://sourceforge.n[...] Christian Jullien 2011-12-31
[99] 웹사이트 AMACS source http://www.mmnt.net/[...] 2016-06-12
[100] 웹사이트 apple2.org http://apple2.org.za[...] 2016-06-12
[101] 웹사이트 Cocoa text system https://www.hcs.harv[...] 2016-06-12
[102] 웹사이트 SublemacsPro plugin for Sublime Text https://github.com/g[...] 2016-06-12
[103] 웹사이트 Init file https://www.gnu.org/[...] 2016-06-20
[104] 서적 プロフェッショナルUNIX 株式会社アスキー 1986-01-15
[105] 웹사이트 https://elpa.gnu.org[...]
[106] 웹사이트 Saint IGNUcius - Richard Stallman http://stallman.org/[...] 2015-01-29
[107] 웹사이트 The unabridged selective transcript of Richard M Stallman's talk at the ANU https://linuxhelp.bl[...] 2015-01-29
[108] 뉴스그룹 alt.religion.emacs newsgroup news:alt.religion.em[...]
[109] 웹사이트 Saint IGNUcius - Richard Stallman http://www.stallman.[...]
[110] 웹사이트 How To Avoid The Emacs Pinky Problem http://xahlee.org/em[...] Xahlee.org 2009-11-08
[111] 웹사이트 EmacsWiki: Repeated Strain Injury http://www.emacswiki[...] 2015-01-29
[112] 웹사이트 Moving The Ctrl Key http://www.emacswiki[...] EmacsWiki 2009-11-08
[113] 웹사이트 EmacsWiki: Ace Jump http://www.emacswiki[...] 2015-01-29
[114] 웹사이트 Spacemacs https://github.com/s[...] 2015-04-20
[115] 웹사이트 Sticky Modifiers http://www.emacswiki[...] EmacsWiki 2009-11-08
[116] 웹사이트 Viper Mode http://www.emacswiki[...] EmacsWiki 2009-11-08
[117] 웹사이트 At Home Modifier by Evdev https://gitlab.com/a[...] 2015-04-14
[118] 웹사이트 Why Emacs's Keyboard Shortcuts are Painful http://ergoemacs.org[...] 2016-06-12
[119] 웹사이트 VAXen http://www.catb.org/[...] Catb.org 2009-11-08
[120] 서적 ソースコードの反逆 株式会社アスキー 2002-06-11
[121] 웹사이트 Some funny acronym expansions of Emacs https://www.gnu.org/[...] 2021-11-07
[122] 웹인용 Emacs Timeline http://www.jwz.org/d[...] 2015-08-11
[123] 웹인용 GNU Emacs 27.1 released https://www.gnu.org/[...] GNU Project 2020-08-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com