이맥스

Emacs

원래 이름은 EMACS(Editor Macros의 약자)인 EMACS /ˈiːmæks/확장성이 특징인 텍스트 편집기 계열입니다.가장 널리 사용되는 [5]변형인 GNU Emacs의 매뉴얼은 "확장 가능하고 사용자 지정 가능하며 자체 문서화된 실시간 디스플레이 편집기"[6]라고 설명합니다.최초의 이맥스는 1970년대 [7]중반에 개발이 시작되었으며, 그 직계 후손인 GNU 이맥스에 대한 작업이 진행 중이며, 최신 버전은 2023년 [8]7월에 출시된 29.1입니다.

Emacs에는 10,000개 이상의 명령어가 내장되어 있으며 사용자 인터페이스를 통해 이러한 명령어를 매크로로 결합하여 작업을 자동화할 수 있습니다.Emacs의 구현은 일반적으로 리스프 프로그래밍 언어의 방언을 특징으로 하며, 사용자와 개발자가 에디터를 위해 새로운 명령어와 애플리케이션을 작성할 수 있도록 합니다.확장 기능은 파일, 원격 액세스,[9] 전자 메일, 개요, 멀티미디어, Git 통합, RSS [10]피드 관리, ELIZA, Pong, Conway's Life, Snake, Dunnet[11]Tetris의 구현 등을 위해 작성되었습니다.

오리지널 EMACS는 데이비드 A에 의해 1976년에 쓰여졌습니다. TECO [12][1][2][3][13]편집자를 위한 매크로 세트로 Moon과 Guy L. Steel Jr.TECO 매크로 편집자인 TECMAC와 TMACS의 아이디어에서 [14]영감을 얻었습니다.

가장 인기 있고 가장 많이 이식되는 버전은 GNU [15]프로젝트를 위해 리처드 스톨먼이 만든 GNU Emacs입니다.XEmacs는 1991년 GNU Emacs에서 분기된 변종입니다.GNU Emacs와 XEmacs는 유사한 리스프 방언을 사용하며 대부분 서로 호환됩니다. XEmacs 개발은 비활성입니다.

GNU Emacs는 vi와 함께 유닉스 문화전통적인 편집자 전쟁의 두 주요 경쟁자 중 하나입니다.GNU Emacs는 아직도 개발 [16]중인 가장 오래된 무료 오픈 소스 프로젝트 중 하나입니다.

역사

이맥스는 가이 L. 스틸 주니어에 의해 MIT에서[2] 다양한 TECO 명령어 세트와 키 바인딩을 통합하는 프로젝트로 시작되었습니다.
데이비드 A. 문
Emacs의 인터페이스는 사용자가 가능한 [17]한 많은 종류의 입력을 입력할 수 있도록 하는 스페이스 카데 키보드의 디자인에 영향을 받았습니다.

Emacs의 개발은 1970년대에 MIT AI Lab에서 시작되었는데, 그들의 PDP-6PDP-10 컴퓨터는 TECO(Tape Editor and Corrector)로 알려진 기본 라인 편집기를 특징으로 하는 호환되지 않는 타임셰어링 시스템(ITS) 운영 체제를 사용했습니다.대부분의 현대 텍스트 편집기와 달리 TECO는 사용자가 텍스트를 추가하거나 기존 텍스트를 편집하거나 문서를 표시하는 별도의 모드를 사용했습니다.TECO에 문자를 입력하여 문서에 직접 넣을 수는 없고, 대신 TECO 명령어에 문자('i')를 입력하여 입력 모드로 전환하도록 지시하고, 필요한 문자를 입력하고, 그 동안 편집된 텍스트가 화면에 표시되지 않는 경우,그리고 마지막으로 문자(<esc>)를 입력하여 에디터를 명령 모드로 다시 전환합니다.(오버타이핑을 허용하기 위해 비슷한 기법이 사용되었습니다.)이 동작은 프로그램된 동작과 유사합니다.

1970년대에 TECO는 이미 1962년에 처음 출시된 오래된 프로그램이었습니다.Richard Stallman은 1976년[18] Stanford AI Lab을 방문하여 Fred [19]Wright에 의해 쓰여진 연구실의 E 에디터를 보았습니다.그는 편집자의 직관적인 WYSIWYG(What You See Is What You Get) 행동에 깊은 인상을 받았고, 이후 대부분의 현대 텍스트 편집자들의 기본 행동이 되었습니다.그는 AI 연구소의 해커인 칼 미켈슨이 TECO에 사용자가 키 입력을 할 때마다 화면 디스플레이가 업데이트되도록 하는 Control-R이라고 불리는 결합 디스플레이/편집 모드를 추가한 MIT로 돌아왔습니다.Stallman은 효율적으로 실행하기 위해 이 모드를 다시 구현한 다음 사용자가 TECO [3]프로그램을 실행하기 위해 키 입력을 재정의할 수 있도록 하는 매크로 기능을 TECO 디스플레이 편집 모드에 추가했습니다.

E는 TECO에 부족한 또 다른 기능인 랜덤 액세스 편집을 가지고 있었습니다.TECO는 비용 문제로 컴퓨터 메모리가 일반적으로 작았던 시기에 PDP-1종이 테이프 편집을 위해 설계된 페이지 순차 편집기로, 파일 내 페이지 순서대로 한 번에 한 페이지씩만 순차적으로 편집할 수 있도록 한 것이 TECO의 특징이었습니다.디스크의 페이지 랜덤 액세스를 위해 파일을 구조화하는 E의 접근 방식을 채택하는 대신, Stallman은 대용량 버퍼를 보다 효율적으로 처리할 수 있도록 TECO를 수정하고 파일 관리 방법을 전체 파일을 하나의 버퍼로 읽고 편집하고 쓰는 방식으로 변경했습니다.거의 모든 현대 편집자들이 이 접근법을 사용합니다.

새로운 버전의 TECO는 AI Lab에서 빠르게 인기를 끌었고 곧 매크로를 의미하는 MAC 또는 MACS로 끝나는 이름의 맞춤형 매크로 컬렉션을 많이 쌓았습니다.2년 후, 가이 스틸은 다양한 매크로를 하나의 [20]세트로 통합하는 프로젝트를 시작했습니다.스틸과 스톨먼의 완성된 구현에는 새로운 매크로 [3]세트를 확장하고 문서화하기 위한 설비가 포함되었습니다.결과적인 시스템은 EMACS라고 불렸는데, 이는 Editing MACros 또는 대안적으로 MACros가 있는 E의미합니다.스톨먼은 "당시 [21]ITS에서 <E>가 약어로 사용되지 않았기 때문에" Emacs라는 이름을 선택했습니다. 익명의 해커 코안은 이 프로그램이 보스턴의 인기 아이스크림 [22]가게인 이맥 앤 볼리오이름을 따왔다고 주장합니다.최초의 작동 EMACS 시스템은 1976년 [23]말에 존재했습니다.

Stallman은 너무 많은 커스터마이징과 사실상의 포크에 문제가 있다고 보고 특정 [citation needed]사용 조건을 설정했습니다.그는 나중에 이렇게 썼습니다.[23]

EMACS는 공동 공유를 기반으로 배포되었으며, 이는 통합되고 배포되기 위해서는 모든 개선 사항이 제게 반환되어야 한다는 것을 의미합니다.

원래의 Emacs는 TECO와 마찬가지로 ITS를 실행하는 PDP-10에서만 실행되었습니다.TECO의 행동은 TECO의 행동과 충분히 달랐기 때문에 그 자체로 텍스트 편집기로 여겨질 수 있었고, 순식간에 ITS의 표준 편집 프로그램이 되었습니다.Mike McMahon은 이맥스를 ITS에서 TENEXTOPS-20 운영 체제로 이식했습니다.이맥스의 초기 버전에 기여한 다른 인물로는 켄트 피트먼, 얼 킬리언, 유진 시카렐리 등이 있습니다.1979년까지 이맥스는 MIT의 AI 연구소와 컴퓨터 [24]과학 연구소에서 사용된 주요 편집자였습니다.

구현

초기 구현

Zmacs, 리스프 머신용 Emacs, EINE과 ZWEI의 진화
James Gosling은 1981년에 유닉스(Gosling Emacs)에서 실행하기 위해 Emacs와 같은 편집기를 썼습니다.

그 후 몇 년 동안 프로그래머들은 다른 컴퓨터 시스템을 위한 다양한 Emacs 같은 편집기를 썼습니다.여기에는 Mike McMahon과 Daniel WeinrebLisp 기계용으로 작성한 EINE(EINE Is Not EMACS)와[25] ZWEI(ZWEI Was EINE Initial), Owen Theodore Anderson이 작성한 Sine(Sine Is Not Eine)[26]포함되었습니다.Weinreb의 EINE은 리스프로 쓰여진 최초의 이맥스였습니다.1978년, Bernard Greenberg는 Honeywell's Cambridge Information Systems Lab의 Multics Lisp에서 Multics Emacs를 거의 완전히 작성했습니다.Multics Emacs는 나중에 NIL 프로젝트를 위한 NILE Emacs와 유사한 편집기를 개발한 Richard Soley와 Barry Margolin에 의해 유지되었습니다.GNU Emacs를 포함한 많은 버전의 Emacs는 나중에 확장 언어로 Lisp를 채택했습니다.

나중에 NewWS와 자바 프로그래밍 언어를 발명하게 된 제임스 고슬링은 1981년에 고슬링 이맥스를 썼습니다.유닉스에서[citation needed] 실행되는 최초의 이맥스 유사 편집기인 고슬링 이맥스는 C로 작성되었으며 리스프 유사 구문을 가진 언어인 모클립을 확장 언어로 사용했습니다.

1984년 [28]미국CCA EMACS(Steve Zimmerman)[27]의 초기 광고가 등장했습니다. 1985년 GNU EMACS와 비교했을 때 2,[29][irrelevant citation]400달러 대비 무료라고 언급했습니다.

GNU 이맥스

텍스트 콘솔에서 실행되는 GNU Emacs
Microsoft Windows에서 실행되는 GNU Emacs

Richard Stallman은 1984년에 GNU Emacs를 개발하기 시작했습니다.GNU 이맥스는 처음에 고슬링 이맥스를 기반으로 하였으나, 스톨만이 모클리스프 인터프리터를 진정한 리스프 인터프리터로 교체하면서 거의 모든 코드가 다시 작성되어야 했습니다.이것은 초기 GNU 프로젝트에 의해 발표된 첫 번째 프로그램이 되었습니다.GNU Emacs는 C로 작성되어 있으며 확장 언어로 C로 구현된 Emacs Lisp를 제공합니다.버전 13은 1985년 3월 20일에 처음 공개되었습니다.GNU Emacs의 첫 번째 널리 배포된 버전은 1985년에 출시된 버전 15.34입니다.GNU Emacs의 초기 버전은 1.x.x로 번호가 매겨졌고, 초기 숫자는 C 코어의 버전을 나타냅니다.1은 1.12 버전 이후에 떨어졌는데, 그 이유는 주요 번호가 절대 변하지 않을 것으로 생각되었기 때문에 번호[30]1에서 13으로 건너뛰었기 때문입니다.2014년 9월, GNU 이맥스 개발 메일링 리스트에서 GNU 이맥스가 빠른 출시 전략을 채택할 것이며 버전 번호는 [31]앞으로 더 빠르게 증가할 것이라고 발표되었습니다.

GNU 이맥스는 고슬링 이맥스보다 더 많은 기능을 제공하였으며, 특히 확장 언어로서 완전한 기능을 갖춘 리스프(Lisp)를 제공하였고, 곧 고슬링 이맥스를 대체하여 사실상의 유닉스 이맥스 편집기가 되었습니다.Markus Hess는 1986년에 그가 유닉스 [32]컴퓨터에 대한 슈퍼유저 액세스를 얻었던 GNU Emacs의 이메일 서브시스템에 보안 결함이 있음을 이용했습니다.

대부분의 GNU Emacs 기능은 Emacs Lisp라는 스크립트 언어를 통해 구현됩니다.GNU Emacs의 약 70%가 Emacs Lisp 확장 [33]언어로 작성되므로 Emacs Lisp 인터프리터를 구현하는 C 코어만 포팅하면 됩니다.이것은 네이티브 코드로만 구성된 동등한 프로젝트를 포팅하는 것보다 새로운 플랫폼에 Emacs를 포팅하는 것을 훨씬 덜 어렵게 만듭니다.

GNU Emacs 개발은 1999년까지 비교적 폐쇄적이었고 The Cathedral과 the Baza에서 Cathedral 개발 스타일의 예로 사용되었습니다.이 프로젝트는 공공 개발 메일링 리스트와 익명의 CVS 접근을 채택했습니다.개발은 2008년까지 단일 CVS 트렁크에서 이루어졌으며 이후 바자 DVCS로 전환되었습니다.2014년 11월 11일,[34] 개발이 으로 이전되었습니다.

Richard Stallman은 GNU Emacs의 주요 관리자로 남아 있지만 때때로 그 역할에서 물러나기도 합니다.스테판 모니에와 정이동은 2008년부터 2015년까지 유지 [35][36]관리자였습니다.John Wiggley는 [37]MIT에서 Stallman과 회의를 한 후 2015년에 유지 관리자로 임명되었습니다. 2014년 초 현재 GNU Emacs는 [38]역사를 통틀어 579명의 개인 커밋을 보유하고 있습니다.

XEMacs

리눅스 기반 XEmac 21.5

Lucid Emacs는 GNU Emacs 19의 초기 알파 버전을 기반으로 1991년에 Lucid Inc.Jamie Zawinski 에 의해 개발되었습니다.자유 소프트웨어 개발에서 가장 잘 알려진 초기 포크 중 하나는 두 개의 Emacs 버전의 코드베이스가 갈라지고 별개의 개발 팀들이 그것들을 다시 하나의 [39]프로그램으로 병합하려는 노력을 중단했을 때 발생했습니다.루시드 이맥스는 그 이후로 XEmacs로 이름이 바뀌었습니다.가장 최근의 안정적인 버전 21.4.22는 2009년 1월에 출시되었으며(베타는 2013년에 출시됨), GNU Emacs는 이전에 XEmacs 전용 [40][better source needed]기능을 많이 구현했습니다.

GNU Emacs의 다른 포크

그 밖에 주목할 만한 포크는 다음과 같습니다.

  • Aquamacs – Apple Macintosh 사용자 인터페이스와의 통합에 중점을 둔 GNU Emacs 기반(Aquamacs 3.2는 GNU Emacs 버전 24, Aquamacs 3.3은 GNU Emacs 버전 25)
  • 메도우 – Microsoft[41] Windows용 일본어 버전

다양한 Emacs 에디터

리눅스에서 uEmacs/Pk 4.0.15
OpenBSD 5.3의 mg 작은 Emacs 유사 편집기.Ruby 소스 코드 편집
데비안 박스에서 달리는 조브

과거에는 작은 버전의 Emac을 생산하는 것을 목표로 하는 프로젝트가 확산되었습니다.GNU Emacs는 처음에 32비트 플랫 주소 공간과 최소 1 MiB[42]RAM을 가진 컴퓨터를 대상으로 했습니다.그러한 컴퓨터는 1980년대에는 하이엔드 워크스테이션과 미니 컴퓨터였기 때문에 일반적인 개인용 컴퓨터 하드웨어에서 실행되는 더 작은 재구현이 필요했습니다.오늘날의 컴퓨터는 이러한 제약을 제거하기에 충분한 전력과 용량을 가지고 있지만, 최근에는 소규모 클론이 소프트웨어 설치 디스크에 적합하거나 성능이 떨어지는 [43]하드웨어에 사용할 수 있도록 설계되었습니다.

다른 프로젝트들은 이맥스를 리스프의 다른 방언으로 구현하거나 아예 다른 프로그래밍 언어로 구현하는 것을 목표로 합니다.모든 클론이 여전히 능동적으로 유지되는 것은 아니지만 다음과 같은 클론이 있습니다.

  • 원래 데이브 콘로이가 쓰고 다니엘 로렌스가 더 발전시킨 마이크로EMACS는 많은 변형이 존재합니다.
  • 원래는 MicroGNUEmacs, 나중에는 MicroEMACS의 공개 도메인 분파인 mg2a가 GNUEMACS와 더 유사하도록 의도되었습니다.이제 OpenBSD에 기본적으로 설치됩니다.
  • JOVE(Jonathan's Own's Own Version of Emacs), UNIX와 유사한 시스템을 위한 Jonathan Payne의 프로그래밍이 불가능한 Emacs 구현.
  • 마크 오브 더 유니콘의 CP/M 이후 도스용 버전인 MINCE(MINCE is Not Complete Emacs).MINCE는 Final Word로 발전했고, 그것은 결국 볼랜드 스프린트 워드 프로세서가 되었습니다.
  • 1982년경 Kaypro II 및 Kaypro IV의 가장 초기 릴리스와 함께 기본 워드 프로세서로 포함된 MINCE에서 파생된 CP/M 구현체Perfect Writer.나중에 워드스타의 대안으로 케이프로 10과 함께 제공되었습니다.
  • 텍스트 매크로 확장에 기반한 확장 언어를 사용하며 원래 64 KiB 플랫 메모리 제한 내에 맞는 DOS 버전프리맥스.
  • Zmacs는 MIT Lisp 머신과 그 후손들을 위해 ZetaLisp에서 구현되었습니다.
  • 루가루 소프트웨어가 만든 이맥스 복제품 엡실론.[44]DOS, Windows, Linux, FreeBSD, Mac OS X 및 OS/2용 버전이 릴리스에 번들로 제공됩니다.C 구문을 가진 비 Lisp 확장 언어를 사용하며 단일 태스크 MS-DOS에서 매우 초기의 동시 명령 셸 버퍼 구현을 사용했습니다.
  • PceEmacsSWI-Prolog용 Emacs 기반 편집기입니다.
  • 헴록, 원래 스파이스 리스프, 커먼 리스프로 쓰여졌습니다.CMU Common Lisp의 일부입니다.Zmacs의 영향을 받았습니다.나중에 루시드 커먼 리스프(헬릭스), 리스프웍스, 클로저 CL 프로젝트에 의해 포크됩니다.또한 여러 Common Lisp 구현에서 실행되는 Hemlock을 제공하는 것을 목표로 하는 Portable Hemlock 프로젝트도 있습니다.
  • MIT/GNU Scheme에 포함된 Emacs와 유사한 텍스트 편집기인 edwin.

Emacs 에뮬레이션이 있는 편집기

  • 코코아 텍스트 시스템은 동일한 용어 중 일부를 사용하며 많은 Emacs 탐색 바인딩을 이해합니다.이는 기본 UI에서 Control [45]키 대신 Command 키(Super와 동일)를 사용하기 때문에 가능합니다.
  • Eclipse(IDE)는 Emacs 키 바인딩 세트를 제공합니다.
  • Epsilon(텍스트 편집기) Emacs 에뮬레이션을 기본값으로 하며 vi 모드를 지원합니다.
  • GNOME Builder에는 Emacs 에뮬레이션 모드가 있습니다.
  • GNU Readline은 표준 Emacs 탐색 키 바인딩을 이해하는 라인 편집기입니다.vi 에뮬레이션 모드도 있습니다.
  • IntelliJ IDEA는 Emacs 키 바인딩 세트를 제공합니다.
  • JED에는 Emacs 에뮬레이션 모드가 있습니다.
  • Joe's Own Editor는 다음과 같이 호출될 때 Emacs 키 바인딩을 에뮬레이트합니다.jmacs.
  • MATLAB[46]편집기를 위한 Emacs 키 바인딩을 제공합니다.
  • 콘쉘은 Gnu [47]Readline보다 앞선 이맥스 라인 편집 모드를 가지고 있습니다.
  • 비주얼 스튜디오 코드는 Emacs 키 바인딩을 에뮬레이트하기 위한 확장 기능제공합니다.
  • Oracle SQL Developer는 대체 키보드 단축 레이아웃을 저장하고 로드할 수 있습니다.기본 레이아웃 중 하나는 Emacs와 유사한 키 바인딩을 제공하며, 여기에는 여러 명령을 사용하여 보다 긴밀한 동작을 수행할 수 있습니다.

특징들

Emacs는 텍스트 편집기로 텍스트를 조작할 수 있도록 설계되어 있지만 LaTeX, Ghostscript 또는 웹 브라우저와 같은 외부 프로그램과 인터페이스하여 워드 프로세서처럼 문서를 포맷하고 인쇄할 수 있습니다.Emacs는 단어, 문장, 문단같은 텍스트의 의미 단위와 함수와 같은 소스 코드 구문을 조작하고 차별적으로 표시하는 명령어를 제공합니다.또한 사용자가 정의한 편집 명령 배치를 수행하기 위한 키보드 매크로 기능도 갖추고 있습니다.

GNU Emacs는 편집 내용이 발생할 때 화면에 표시되기 때문에 실시간으로 표시 편집기입니다.이것은 현대 텍스트 편집기의 표준 동작이지만 EMACS는 이를 구현한 가장 초기의 것 중 하나였습니다.텍스트를 표시하기 위해 별도의 명령을 실행해야 하는 것이 대안입니다(예: 수정하기 전이나 후).이는 QED(BTS, CTSS, Multics), ED(Unix), ED(CP/M) 및 Edlin(DOS)과 같은 이전(또는 단순한) 라인 및 컨텍스트 편집기에서 일반적으로 사용되었습니다.

일반건축

파일에 문자를 삽입하는 것과 같은 기본적인 편집 작업을 포함한 이맥스의 거의 모든 기능은 리스프 프로그래밍 언어의 방언으로 쓰여진 기능을 통해 달성됩니다.GNU 이맥스에서 사용되는 방언은 이맥스 리스프(Elisp)로 알려져 있으며, 이맥스를 GNU유닉스로 포팅하기 위해 특별히 개발되었습니다.Emacs Lisp 계층은 C 프로그래밍 언어로 작성된 기본 서비스와 플랫폼 추상화의 안정적인 핵심에 위치하며, 이를 통해 대부분의 편집자가 거주하는 Lisp 시스템의 구현 의미를 수정하지 않고도 GNU Emacs를 다양한 운영 체제와 아키텍처로 포팅할 수 있습니다.이 Lisp 환경에서는 Emacs를 재구축하거나 재시작할 필요 없이 변수와 기능을 수정할 수 있으며, 새로 정의된 버전의 핵심 편집기 기능도 비동기적으로 컴파일되고 라이브 환경에 로드되어 기존 정의를 대체할 수 있습니다.현대의 GNU 이맥스는 이맥스 리스프를 위한 바이트 코드와 네이티브 코드 컴파일 기능을 모두 갖추고 있습니다.

모든 구성은 변수, 클래스 및 데이터 구조에 저장되며 이러한 라이브 업데이트만으로 변경됩니다.이 경우 리스프 구문은 소위 심볼릭 표현식(또는 sexprs)으로 구성되어 있기 때문에 핵심적인 장점이 있습니다. 이는 평가 가능한 코드 표현식과 XML, JSONYAML과 유사하지만 더 단순하고 일반적인 데이터 직렬화 형식으로 작용할 수 있습니다. 이러한 방식으로 p에 거의 차이가 없습니다.기존 기능을 사용자 정의하는 것과 새로운 기능을 작성하는 것 사이의 연습입니다. 두 기능 모두 기본적인 방법으로 수행됩니다.이는 편집기의 인터페이스와 기능을 구현하고 사용자 정의 구성 및 옵션을 인코딩하기 위해 별도의 언어를 사용하는 VS Code와 같은 대부분의 현대 확장형 편집기와는 작동상 차이가 있습니다.Emacs의 오픈 디자인의 목표는 깃트리에서 작업하는 Emacs 개발자에게 노출되는 것과 동일하게 정상적인 사용 중에 Emacs의 내부를 투명하게 노출시키고, Emacs를 사용하는 것과 Emacs를 프로그래밍하는 것의 차이점을 최대한 붕괴시키는 동시에 안정적이고 실용적인 것입니다.그리고 초보 사용자를 위한 반응형 편집 환경을 제공합니다.

대화형 데이터

주요 텍스트 편집 데이터 구조는 연관된 속성을 가진 데이터(일반적으로 텍스트)를 포함하는 메모리 영역인 버퍼입니다.가장 중요한 것은 다음과 같습니다.

  • 요점: 편집 커서;
  • 표시: 지점과 함께 다음을 선택할 수 있는 설정 가능한 위치
  • 지역: 편집 명령이 적용될 개념적으로 연속된 텍스트 모음
  • 버퍼가 방문 인 파일의 이름과 inode(있는 경우);
  • OS 수준의 명령이 기본적으로 실행되는 기본 디렉토리;
  • 버퍼의 모드들, 아마도 몇 개의 마이너 모드들을 포함합니다.
  • 버퍼 인코딩, Emacs가 사용자에게 버퍼 데이터를 표현하는 방법;
  • 다양한 버퍼 로컬 변수 및 Emacs Lisp 상태.

모드는 특히 Emacs에서 중요한 개념으로, Emacs의 기능을 특정 버퍼의 데이터와 관련된 일련의 동작 및 키 바인딩으로 분리하는 메커니즘을 제공합니다.주요 모드는 버퍼의 데이터와 사용자가 버퍼와 상호 작용하는 방식과 관련된 기능과 명령의 일반적인 패키지를 제공합니다(예: 특정 언어로 소스 코드 편집, 16진수 편집, 파일 시스템 보기, git와 상호 작용).그리고 마이너 모드는 많은 주요 모드에 적용할 수 있는 기능의 보조 컬렉션을 정의합니다(예:auto-save-mode부 모드는 로컬에서 각 버퍼로 전환할 수 있을 뿐만 아니라 모든 버퍼에 걸쳐 전역적으로 전환할 수 있으며, 부 모드는 버퍼별로만 전환할 수 있습니다.버퍼와 관련이 있지만 모드에 번들되지 않은 다른 데이터는 해당 버퍼에 초점을 맞추고 관련 데이터를 직접 라이브로 수정하기만 하면 처리할 수 있습니다.

편집기와의 모든 상호 작용(키 누르기 또는 마우스 버튼 클릭 등)은 대화형 사용을 위해 명시적으로 설계된 기능인 Emacs Lisp 코드(일반적으로 명령어)를 평가함으로써 실현됩니다.키는 임의로 재정의될 수 있으며 명령어는 이름으로 액세스할 수도 있습니다. 일부 명령어는 다양한 방식으로 사용자가 제공한 임의의 Emacs Lisp 코드를 평가합니다(예: 패밀리 오브eval-함수, 작동buffer,region, 또는 개인expression가장 간단한 사용자 입력(인쇄 가능한 문자)조차도 Emacs Lisp 기능으로 효과를 발휘합니다.self-insert-command, 일반적인 텍스트 편집 버퍼의 대부분의 키보드 키에 기본적으로 바인딩되어 있으며, 이 버퍼는 해당 키를 호출하는 데 사용되는 키와 관련된 로케일 정의 문자로 매개 변수를 지정합니다.

예를 들어, 를 누르는 것.f 텍스트 입력을 받아들이는 버퍼의 키는 코드를 평가합니다.(self-insert-command 1 ?f), 문자 상수의 복사본 하나를 삽입합니다.?f 바로 그 지점에. 그.1 , 이 경우, 모든 Emacs 명령 코드는 가장 간단한 사용법에서 동작의 반복을 나타내는 숫자 값을 받아들이지만, 더 복잡한 경우(반복이 의미 없는 경우)에는 다른 동작을 산출할 수 있습니다.이러한 인수는 u7f+와 같은 명령어 접두사를 통해 제공될 수 있으며, 더 압축적으로 +7f로 확장됩니다.(self-insert-command 7 ?f). 접두사가 제공되지 않는 경우 범용 인수는1: 모든 명령어는 암묵적으로 한 번 실행되지만, 그러한 접두사와 함께 제공될 때 곱셈이라고 불리거나 다른 방식으로 호출될 수 있습니다.그러한 인수는 또한 그러한 것이 타당한 경우에는 긍정적이지 않을 수 있습니다. 즉, 주어진 수가 그 수에 무엇을 의미하는지 결정하는 것은 인수를 받아들이는 함수에 달려 있습니다.한 가지 일반적인 용법은 함수가 단순히 보편적인 인수의 부호를 확인하는 것입니다. 예를 들어, 인수의 절대값을 정렬 키로 사용하여 기본적으로 반대로 정렬하고 음의 인수로 호출하면 반대로 정렬하는 정렬 명령어와 같이 말입니다.-7열 인덱스(또는 구분 기호) 7) 또는 실행 취소/실행으로 정렬합니다. 이는 단순히 서로에 대해 부정적인 것입니다(한 번에 몇 단계씩 diff의 재귀적 이력을 통해 앞뒤로 정렬됨).

명령어

상대적으로 명령어 어휘가 많기 때문에 Emacs는 동작 수행에 필요한 키 입력을 간결하게 표현하기 위해 오랫동안 확립된 명령어를 특징으로 합니다.이 명령어는 , , , , , , 및 . 이 모든 것이 IBM 스타일 키보드에 존재하지는 않지만 일반적으로 원하는 대로 구성할 수 있습니다.이들은 각각의 우선순위로 명령어로 표현됩니다.C-,A-,S-,M-,s-,그리고.H-. 이름이 둘 이상의 문자로만 인쇄 가능한 키는 각괄호 안에 들어 있습니다.따라서 +++Alt⇧ ShiftF9와 같은 키보드 단축키(의존식을 확인하고 엑셀에서 열려있는 모든 워크북의 모든 셀을 계산)는 다음과 같이 Emacs 명령어로 렌더링됩니다.C-A-S-<f9> , +++(sfCtrlMetas파일명 일치 regexp에 의한 증분 파일 검색)와 같은 Emacs 명령어는 다음과 같이 표현됩니다.M-s f C-M-s. 명령어는 바로 가기가 할당되지 않은 명령을 호출하는 데 필요한 작업을 표현하는 데도 사용됩니다. 예를 들어 명령어가 있습니다.scratch-buffer(임시 텍스트 저장 및 조작을 위해 메모리의 버퍼를 초기화) 사용자가 호출하면 다음과 같이 다시 보고됩니다.M-x scra <return>, Emacs를 사용하여 컨텍스트에서 사용 가능한 명령의 네임스페이스를 스캔하여 고유하게 사전 지정된 키 입력의 최단 시퀀스를 반환합니다.

다이나믹 디스플레이

Emacs는 그래픽 사용자 인터페이스에 대한 현대 표준 용어보다 앞서기 때문에 친숙한 인터페이스 요소에 대해 다소 다양한 이름을 사용합니다.Emacs 사용자가 상호 작용하는 데이터인 버퍼는 단말 화면 또는 GUI 창의 타일 부분인 창 에 사용자에게 표시되며, 이는 Emacs가 프레임이라고 지칭합니다. 현대 용어로 Emacs 프레임은 창이 되고 Emacs 창은 분할됩니다.구성에 따라 윈도우에는 자체 스크롤 바, 라인 번호, 때로는 탐색을 용이하게 하는 '헤더 라인', 하단에 모드 라인(일반적으로 버퍼 이름, 버퍼의 활성 모드 및 지점 위치 등을 표시함)이 포함될 수 있습니다.모든 프레임의 하단은 출력 메시지(이후 '에코 영역'이라고 함)와 명령어(이후 '미니 버퍼'라고 함)를 위한 텍스트 입력(이후 '미니 버퍼'라고 함)에 사용됩니다.

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

버퍼가 윈도우를 필요로 하지 않는 것처럼, 실행 중인 Emacs 프로세스는 프레임이 필요하지 않으며, 일반적인 사용 패턴 중 하나는 Emacs를 편집 서버로 배포하는 것입니다. 즉, 헤드리스 데몬으로 실행하고 프레임 산란 클라이언트를 통해 연결하는 것입니다.그러면 이 서버는 편집자가 필요한 모든 상황에서 클라이언트 프로그램을 사용자의 것으로 선언하기만 하면 사용할 수 있습니다.EDITOR아니면VISUAL변수.이러한 서버는 백그라운드에서 계속 실행되며, 자식 프로세스를 관리하고, 열린 파이프, 포트 또는 피포에서 stdin을 축적하고, 주기적 또는 미리 프로그래밍된 작업을 수행하고, 버퍼 실행 취소 기록, 저장된 텍스트 스니펫, 명령 기록 및 편집 세션 사이의 기타 사용자 상태를 기억합니다.이 동작 모드에서 Emacs는 스크린과 tmux와 같은 프로그램의 기능을 겹칩니다.

편집 기능에서 디스플레이 문제를 분리하기 때문에, Emacs는 충분히 기능적인 텍스트 터미널에 전형적인 그래픽 윔프 요소를 제공하는 것을 포함하여 바보 단말기보다 더 복잡한 장치에서 대략 유사하게 디스플레이할 수 있습니다 - 그래픽 프레임이 선호되는 디스플레이 모드이지만,텍스트 단말기 프레임의 특징을 엄격하게 수퍼셋으로 제공합니다.

사용자 정의 및 확장성

  • 사용자 작업을 매크로에 기록하고 재생하여 복잡하고 반복적인 작업을 자동화할 수 있습니다.매크로는 나중에 저장하고 호출할 수 있지만, 각 매크로는 사용 후 폐기되는 등 임시로 수행되는 경우가 많습니다.
    • Emacs의 기능 정의가 Emacs Lisp에서 동일하기 때문에 매크로 자동화의 목적으로 "사용자 작업"으로 간주되는 것은 유연합니다. 매크로에는 예를 들어 키 누름, 명령, 마우스 클릭, 기타 매크로 및 이를 통해 효과를 얻을 수 있는 모든 것이 포함될 수 있습니다.따라서 매크로는 재귀적일 수 있으며 매크로 내부에서 정의되고 호출될 수 있습니다.
  • 시작할 때 Emacs는 ~/.emacs라는 이름의 Emacs Lisp 스크립트를 실행합니다(최근 버전에서는 ~/emacs.el, ~/.emacs.d/init.el~/.config/emacs/init.el;[48]~/.config/emacs/init.[49]el에서 유사한 변형을 찾습니다).Emacs는 early-init.el이 있는 경우 먼저 읽으며 그래픽 디스플레이 시스템이나 패키지 관리자와 같이 핵심 Emacs 기능을 로드하기 전에 구성하거나 단락하는 데 사용할 수 있습니다.그런 다음 나머지는 무시하고 찾은 첫 번째 버전 .emacs 또는 init.el을 실행합니다.이 개인 사용자 지정 파일은 임의로 길고 복잡할 수 있지만 일반적인 내용은 다음과 같습니다.
    • 예를 들어, Emacs 동작을 사용자 정의하기 위해 전역 변수 설정 또는 함수 호출(set-default-coding-systems 'utf-8)
    • 키 바인딩은 표준 바인딩을 재정의하고 사용자가 편리하다고 생각하지만 기본적으로 키 바인딩이 없는 명령에 대한 바로 가기를 추가합니다.예:(global-set-key (kbd "C-x C-b") 'ibuffer)
    • 확장을 로드, 활성화 및 초기화합니다(Emac에는 많은 확장 기능이 제공되지만 기본적으로 로드되는 기능은 일부에 불과합니다.)
    • 버퍼 저장 후 소스 코드를 자동으로 다시 컴파일하는 등 특정 시간에 임의 코드를 실행하도록 이벤트 후크 구성(after-save-hook)
    • 일반적으로 지나치게 긴 구성 파일을 관리 가능하고 동질적인 부분으로 분할하기 위해 임의 파일을 실행합니다(~/.emacs.d/ ~/elisp/는 이러한 개인 스크립트의 기존 위치입니다).
  • 사용자 정의 확장을 통해 사용자는 .emacs에서 변수를 설정하는 것보다 더 사용자 친화적인 방식으로 색 구성표와 같은 구성 속성을 대화식으로 설정할 수 있습니다. 검색, 설명 및 도움말 텍스트, 다중 선택 입력, 기본값으로 되돌리기, 다시 로드하지 않고 실행 중인 Emacs 인스턴스의 수정,기타 다른 프로그램의 기본 설정 기능과 유사한 편의성을 제공합니다.사용자 지정된 값은 .emacs(또는 다른 지정된 파일)에 자동으로 저장됩니다.
  • 글꼴 및 색상 선택에 영향을 미치는 테마는 Emacs Lisp 파일로 정의되고 사용자 정의 확장자를 통해 선택됩니다.
  • 모드는 글꼴을 변경하여 코드 및 키 바인딩을 강조 표시함으로써 다양한 프로그래밍 언어(예: emacs-lisp-mode, c-mode, java-mode, ESS for R)를 편집할 수 있도록 지원합니다(단어 기능 대 정방향 페이지).다른 모드에는 스프레드시트 편집(절편) 및 구조화된 텍스트를 지원하는 모드가 있습니다.

자체 문서화

최초의 Emacs에는 모든 명령어, 변수 및 내부 기능에 대한 설명서가 포함된 도움말 라이브러리가 포함되어 있었습니다.이 때문에 이맥스 지지자들은 이 소프트웨어가 사용자에게 정상적인 기능과 현재 상태에 대한 정보를 제공한다는 점에서 자체 문서화라고 설명했습니다.각 함수에는 요청 시 사용자에게 표시되는 문서 문자열이 포함되어 있으며, 이 문자열은 이후리스프, 자바, 펄, 파이썬 등의 프로그래밍 언어로 확산됩니다.이 도움말 시스템은 기본 제공 라이브러리 또는 추가된 타사 라이브러리에서 사용자를 각 기능의 실제 코드로 이동시킬 수 있습니다.

Emacs에는 튜토리얼도 내장되어 있습니다.Emacs는 편집할 파일이 없는 시작 시 간단한 편집 명령을 수행하고 튜토리얼을 호출하기 위한 지침을 표시합니다.이 튜토리얼은 스튜어트 크래크래프트와 리처드 스톨먼의 것입니다.

문화

에막스 교회

리처드 스톨만에 의해 형성된 에막스 교회는 에막스 [50]사용자들을 위해 만들어진 패러디 종교입니다.vi를 야수의 편집자(로마 숫자로 vi-vi는 6-6-6)로 지칭하는 반면, vi를 사용하는 것을 반대하지 않고, 오히려 독점 소프트웨어 아나테마라고 부릅니다. ("vi의 무료 버전을 사용하는 것은 죄악이 아니라 참회입니다.")[51] 에막스 교회에는 자체 뉴스 그룹인 alt.religion.[52]emacs가 있습니다.이 패러디 종교를 지지하는 게시물을 가지고 있습니다.vi의 지지자들은 vi에 반대하는 cult of vi를 만들었습니다.

스톨먼은 농담 삼아 자신을 에막스 [53]교회의 성인인 성 I GNU cius라고 칭했습니다.

에막스 핑키

비록 Emacs가 키보드를 많이 사용하는 다른 컴퓨터 프로그램보다 더 많은 문제를 일으킨다는 것을 보여주는 어떠한 연구도 없었지만, 구어적으로 Emacs pinky라고 불리는 반복적인 변형 손상을 Emacs의 수식어 [54]키에 대한 강한 의존 때문으로 보는 민간인들이 있습니다.

사용자는 다양한 접근 방식을 통해 이 문제를 해결해 왔습니다.일부 사용자는 Shift 키와 같은 일반적인 PC 키보드에서 두 개의 제어 키를 간단히 사용하는 것을 권장하고, 터치 타이핑은 왼쪽 핑키에 과도하게 무리가 가지 않도록 합니다. 키보드를 적절히 사용하면 RSI가 [55]감소됩니다. 소프트웨어 측면 방법은 [56]다음과 같습니다.

  • 키 레이아웃을 사용자 정의하여 키와 [57]키가 전환되도록 합니다.유사한 기술로는 키를 추가 제어 키로 정의하거나 제어 및 메타 키를 전환하는 것이 있습니다.그러나 이러한 키는 여전히 같은 손가락으로 누르는 경우가 많기 때문에 여전히 Emacs pinky에 기여할 수 있습니다.
  • 사용자에게 정기적으로 예약된 휴식을 취하도록 알려주는 소프트웨어(예: xwrites) 또는 Emacs의 내장형 휴식 모드(built-in type-break-mode).
  • ErgoEmac 키 바인딩 사용(단조 모드 포함)ergoemacs-mode).[58]
  • 전체 키보드 레이아웃을 사용자 정의하여 통계적으로 빈번한 Emacs 키를 보다 적절한 [59]장소로 이동할 수 있습니다.
  • 패키지:ace-jump-mode[60] 또는 계층화된 탐색의 유사한 기능을 제공하는 Emacs Lis 확장 기능입니다. 먼저 문자를 요청한 다음 문자의 발생을 커서 이동을 위한 액세스 키로 대체합니다.
  • evil-mode, 고급 Vim 에뮬레이션 레이어
  • god-mode, 이것은 수정자 키 없이 Emacs 명령을 입력하는 모드로 vim과 유사한 접근 방식을 제공합니다.
  • Spacemacs와 Doom Emacs가 제공하는 맞춤형 키 레이아웃을 사용하여 키가 제어 시퀀스를 시작하는 메인 키로 사용되는 프로젝트.이 프로젝트들은 또한 두 가지 모두를 상당히 포함하고 있습니다.evil-mode그리고 후자는god-mode.[61]
  • StickyKeys - 키 시퀀스를 키 [62]조합으로 바꿉니다.
  • 기본 텍스트 편집을 위한 vikey 레이아웃과 고급 기능을 [63]위한 Emacs 스킴을 사용할 수 있는 Emacs의 내장.
  • 스페이스 바와 같이 보다 편하게 접근할 수 있는 키에 이중 역할을 부여하여 다른 키와 함께 누르면 제어 키로 기능합니다.인체공학적 키보드 또는 일본어 키보드와 같이 스페이스 바에 인접한 많은 수의 키를 가진 키보드는 메타나 [64]Shift와 같은 다른 수식어 키를 엄지손가락으로 제어할 수 있습니다.
  • 제한된 인체공학적인 키 바인딩 하위 집합 사용, 입력을 통해 다른 기능에 액세스M-x <command-name>. M-x 자체도 반등할 수 있습니다.
  • 음성 입력을 통해 Emacs를 구동합니다.

하드웨어 솔루션에는 엄지손가락으로 쉽게 조작할 수 있는 수식어 키를 배치하는 키네시스(Kinesis)의 윤곽선 키보드(Contoured Keyboard)나 큰 수식어 키를 키보드 양쪽에 대칭으로 배치하고 손바닥으로 [54]누를 수 있는 마이크로소프트 내추럴(Microsoft Natural) 키보드와 같은 특수 키보드가 있습니다.풋 페달도 사용할 수 있습니다.

이맥스 핑크키는 비교적 최근에 개발된 것입니다.Emacs가 개발된 Space-cadet 키보드는 스페이스 바에 인접하고 [65]엄지손가락으로 쉽게 닿을 수 있는 오버사이즈 컨트롤 키를 가지고 있었습니다.

용어.

이막스라는 단어는 때때로 다른 종류의 [66]이막스를 지칭하는 boxen과 VAXen과 음운적인 비유에 의해 이막센으로 복수화됩니다.

참고 항목

참고문헌

  1. ^ a b Greenberg, Bernard S. (1979). Multics Emacs: The History, Design and Implementation.
  2. ^ a b c "GNU Emacs FAQ".
  3. ^ a b c d Adrienne G. Thompson. "MACSimizing TECO". Archived from the original on 2013-10-24. Retrieved 2012-02-26.
  4. ^ "A Tutorial Introduction to GNU Emacs". For an editor to be called "emacs" the main requirement is that it be fully extensible with a real programming language, not just a macro language.
  5. ^ "GNU Emacs Pocket Reference". GNU Emacs is the most popular and widespread of the Emacs family of editors.
  6. ^ "GNU Emacs Manual". FSF. Retrieved 24 November 2012.
  7. ^ Zawinski, Jamie (2007-10-29). "Emacs Timeline". www.jwz.org. Retrieved 2023-07-31.
  8. ^ "Emacs 29.1 released". lists.gnu.org. Retrieved 2023-07-31.
  9. ^ "Tramp User Manual". Free Software Foundation. Retrieved 2009-04-04.
  10. ^ "Introducing Elfeed, an Emacs Web Feed Reader".
  11. ^ "Amusements". Finally, if you find yourself frustrated, try describing your problems to the famous psychotherapist Eliza. Just do M-x doctor.
  12. ^ Zawinski, Jamie (2005-06-21) [1999]. "Emacs Timeline". Retrieved 11 August 2015.
  13. ^ 리처드 스톨먼(Richard Stallman)은 종종 또 다른 공동 창작자로 인정받지만, 다니엘 와인레브(Daniel Weinreb)가 쓴 처럼, "오리지널(TECO 기반) 이맥스는 가이 L. 스틸 주니어(Guy L. Steel Jr.)와 데이비드 문(David Moon)이 만들고 디자인했습니다.그들이 그것을 작동시키고, 그것이 AI 연구소의 표준 텍스트 편집기로 자리잡은 후, 스톨만이 그것의 유지보수를 인수했습니다."문 대통령 자신은 "내가 기억하는 한 모두 사실입니다.하지만 모든 면에서 볼 때, 스톨만은 그가 가이와 나로부터 이맥스를 "해방"시킨 후에 이맥스를 크게 향상시켰다고 말해야겠습니다."보세요.
  14. ^ "A history of Emacs". XEmacs Internals Manual. 2006-12-11. Retrieved 2007-08-22.
  15. ^ Allombert, Bill. "Debian Popularity Contest". Editors report. Debian. Retrieved 22 November 2011.
  16. ^ "The 10 oldest, significant open-source programs". ZDNet.
  17. ^ Raymond, Eric S.; Cameron, Debra; Rosenblatt, Bill (1996). Learning GNU Emacs, 2nd Edition. Sebastopol, CA: O'Reilly. pp. 408–409. ISBN 1-56592-152-6.
  18. ^ Williams, Sam (2002). Free as in Freedom: Richard Stallman's Crusade for Free Software. Sebastopol, CA: O'Reilly Media. p. 82. ISBN 0-596-00287-4.
  19. ^ Arthur Samuel (March 1980). "Essential E" (PDF). Retrieved 2020-04-19.
  20. ^ "EMACS vs. vi: The endless geek 'holy war'". Archived from the original on 2014-11-26. Retrieved 2014-05-30. "EMACS as such actually started out as a standards project," emails Guy Steele
  21. ^ Stallman, Richard M. (1987). "The EMACS Full-Screen Editor". GARB. No. Maj 1987. Lysator, Linköping University. pp. 8–11. Retrieved 2007-09-14.
  22. ^ Reynolds, Craig (1992-02-10). Wiseman, David G. (ed.). "The Emac Bolio Name Koan". David G. Wiseman: Stories of Computer Folklore. Archived from the original on January 16, 2003. A cocky novice once said to Stallman: 'I can guess why the editor is called Emacs, but why is the justifier called Bolio?'. Stallman replied forcefully, Names are but names, Emack & Bolio's is the name of a popular ice cream shop in Boston town. Neither of these men had anything to do with the software.' His question answered, yet unanswered, the novice turned to go, but Stallman called to him, 'Neither Emacs nor Bolio had anything to do with the ice cream shop, either.'
  23. ^ a b Stallman, Richard (March 26, 1981). EMACS: The Extensible, Customizable, Self-Documenting, Display Editor (PDF) (Technical report). MIT AI Lab. AI Memo 519a. Retrieved 2011-01-07.
  24. ^ Leigh Klotz (2007-08-29). "email quoted in "Be Careful What You Joke About"". The New York Times. Retrieved 2010-05-01.
  25. ^ "Comment by ZWEI's author Dan Weinreb". I wrote the second Emacs ever: the Lisp machine implementation, whose spec was "do what Stallman's PDP-10 (original) Emacs does", and then progressed from there. There's just a whole LOT of it. It took me and Mike McMahon endless hours to implement so many commands to make ZWEI/Zmacs.
  26. ^ Owen Theodore Anderson (January 1979). "The Design and Implementation of a Display-Oriented Editor Writing System" (PDF). Retrieved 2012-09-09.
  27. ^ Christopher Kelty; Mario Biagioli; Peter Jaszi; Martha Woodmansee (2015). Making and Unmaking Intellectual Property. Computer Corporation of America (CCA) EMACS, written by Steve Zimmerman
  28. ^ "Emacs". December 17, 2017.
  29. ^ "Differences between GNU Emacs and CCA Emacs".
  30. ^ "A History of Emacs".
  31. ^ "emacs-devel msg 00872 (2014-09-29)". In retrospect 24.3 should have been named 25.1 and 24.4 should have been named 26.1. The .N thingy should really be kept only for bug-fix releases and neither of 24.3, 24.4, nor the previously planned 24.5 are bug-fix releases.
  32. ^ Stoll, Clifford (1988). "Stalking the wily hacker". Communications of the ACM. 31 (5): 484–497. doi:10.1145/42411.42412. S2CID 6956966.
  33. ^ "GNU Emacs". Open Hub. Retrieved 2017-11-25.
  34. ^ Raymond, Eric (2014-11-12). "New Git repository is up". Retrieved 2017-11-25.
  35. ^ Stallman, Richard (2008-02-22). "Re: Looking for a new Emacs maintainer or team". gnu.org Mailing List. Retrieved 2017-11-25.
  36. ^ McNamara, Paul (2008-02-25). "Stallman on handing over GNU Emacs, its future and the importance of nomenclature". Network World. Retrieved 2017-11-25.
  37. ^ Chirgwin, Richard (2015-11-05). "Emacs gets new maintainer as Richard Stallman signs off". The Register. Retrieved 2017-11-25.
  38. ^ Raymond, Eric (2014-03-29). "Ugliest…repository…conversion…ever". Retrieved 2017-11-25. twenty-nine years of continuous development by no fewer than 579 people
  39. ^ Stephen J., Turnbull. "XEmacs vs. GNU Emacs". Retrieved 2012-10-02.
  40. ^ "XEmacs is Dead. Long Live XEmacs!".
  41. ^ 1면 - 웨이백 머신에서 메도우 위키 아카이브 2012-02-16
  42. ^ "My Lisp Experiences and the Development of GNU Emacs". There were people in those days, in 1985, who had one-megabyte machines without virtual memory. They wanted to be able to use GNU Emacs. This meant I had to keep the program as small as possible.
  43. ^ "GNU Zile (Zile is Lossy Emacs) - Summary". Modern computers have more than enough resources to start and run a full Emacs in a fraction of a second, and Emacs is probably what you want. Zile is a small, fast, and powerful Emacs clone. It is useful for small footprint installations (e.g. on floppy disk), machines with little memory, or quick editing sessions, especially on remote machines or as a different user, e.g. root.
  44. ^ "Lugaru Software Homepage".
  45. ^ "Cocoa text system".
  46. ^ "Setting up keybindings for the Command Window and Editor". Mathworks Blogs. 2007-05-11. Retrieved 2019-08-18.
  47. ^ Bolsky, Morris I.; Korn, David G. (1989). "Acknowledgements". The KornShell Command and Programming Language. Englewood Cliffs, NJ: Prentice Hall. pp. xii. ISBN 0-13-516972-0.
  48. ^ "Init file".
  49. ^ "Early Init file".
  50. ^ "Saint IGNUcius - Richard Stallman". Retrieved 29 January 2015.
  51. ^ "The unabridged selective transcript of Richard M Stallman's talk at the ANU". Archived from the original on 4 October 2011. Retrieved 29 January 2015.
  52. ^ alt.alt.emacs뉴스그룹
  53. ^ "Saint IGNUcius - Richard Stallman". www.stallman.org. Retrieved 27 March 2018.
  54. ^ a b "How To Avoid The Emacs Pinky Problem". Xahlee.org. Retrieved 2009-11-08.
  55. ^ "Emacs: Why You Should Not Swap {Caps Lock, Control} Keys". In touch typing, modifiers comes in pairs, such as ⇧ Shift key. The accepted ergonomic way to press modifier combinations is using one hand to press the modifier key and the other to press the letter key. Using 2 hands avoids single-hand straining its muscle.
  56. ^ "EmacsWiki: Repeated Strain Injury". Retrieved 29 January 2015.
  57. ^ "Moving The Ctrl Key". EmacsWiki. Retrieved 2009-11-08.
  58. ^ "ErgoEmacs Homepage". Retrieved 2018-09-01.
  59. ^ "Keymacs layout". GitHub. 15 September 2022.
  60. ^ "EmacsWiki: Ace Jump". Retrieved 29 January 2015.
  61. ^ "Spacemacs". GitHub. Retrieved 2015-04-20.
  62. ^ BayleShanks (2009-10-07). "Sticky Modifiers". EmacsWiki. Retrieved 2009-11-08.
  63. ^ "Viper Mode". EmacsWiki. Retrieved 2009-11-08.
  64. ^ "At Home Modifier by Evdev". Retrieved 2015-04-14.
  65. ^ "Why Emacs's Keyboard Shortcuts are Painful".
  66. ^ "VAXen". Catb.org. Retrieved 2009-11-08.

서지학

외부 링크