
Emacs ( / ˈ iː m æ k s /ⓘ )、元々はEMACS(Editor Macros の頭文字)と呼ばれていた[ 1 ] [ 2 ] [ 3 ]は、拡張性を特徴とするテキストエディタのファミリーです。 [ 4 ]最も広く使用されているバリアントである[ 5 ] GNU Emacs のマニュアルでは、これを「拡張可能でカスタマイズ可能、自己文書化機能を備えたリアルタイム表示エディタ」と説明しています。 [ 6 ]最初の Emacs の開発は 1970 年代半ばに始まり[ 7 ] [ 8 ]、オリジナルから直接派生した GNU Emacs の開発は継続中です。最新バージョンは30.2 [ 9 ]で、2025 年 8 月 14 日に。 ![]()
Emacsには10,000を超える組み込みコマンドがあり、そのユーザーインターフェースにより、ユーザーはこれらのコマンドを組み合わせてマクロを作成し、作業を自動化できます。Emacsの実装は通常、Lispプログラミング言語の方言を特徴としており、ユーザーと開発者がエディタ用の新しいコマンドやアプリケーションを作成できます。拡張機能は、ファイルの管理、リモートアクセス[ 10 ]、電子メール、アウトライン、マルチメディア、Git統合、RSSフィード[ 11 ]、共同編集[ 12 ]、ELIZA、Pong、Conway's Life、Snake、Dunnet、Tetrisの実装[ 13 ]など、さまざまな機能のために作成されています。
オリジナルの EMACS は、1976 年にDavid A. MoonとGuy L. Steele Jr.によってTECOエディタ用のマクロセットとして作成されました。[ 14 ] [ 1 ] [ 2 ] [ 3 ] [ 15 ]これは、TECO マクロエディタである TECMAC と TMACS のアイデアに触発されたものです。[ 16 ]
Emacs の中で最も人気があり、最も移植されているバージョンは GNU Emacs で、これはGNU プロジェクトのためにRichard Stallmanによって作成されました。[ 17 ] XEmacsは 1991 年に GNU Emacs から分岐したバージョンです。GNU Emacs と XEmacs は似た Lisp 方言を使用しており、大部分において互換性があります。XEmacs の開発は現在非常に遅いです。
GNU Emacsはviと並んで、 Unix文化の伝統的なエディタ戦争における 2 つの主要な競合相手の 1 つです。GNU Emacs は、現在も開発が続けられている最も古いフリーでオープンソースのプロジェクトの一つです。 [ 18 ]



Emacs の開発は 1970 年代にMIT AI ラボで始まりました。同ラボのPDP-6およびPDP-10コンピュータは、デフォルトの行エディタであるText Editor and Corrector (TECO) を備えたIncompatible Timesharing System (ITS)オペレーティングシステムを使用していました。ほとんどの現代のテキストエディタとは異なり、TECO はユーザーがテキストを追加、既存のテキストを編集、またはドキュメントを表示する別々のモードを使用していました。TECO に直接文字を入力してドキュメントに文字を挿入することはできませんでしたが、代わりに TECO コマンド言語で文字 ('i') を入力して入力モードに切り替え、必要な文字を入力しました。この間、編集されたテキストは画面に表示されず、最後に文字 (<esc>) を入力してエディタをコマンドモードに戻しました。(同様の手法がオーバータイピングを可能にするために使用されました。) この動作は、プログラムedの動作と似ています。
1970年代までに、TECOはすでに古いプログラムとなっており、最初にリリースされたのは1962年でした。リチャード・ストールマンは1976年にスタンフォードAIラボを訪れ[ 20 ] 、フレッド・ライトが書いたラボのEエディタを見ました[ 21 ] 。彼は、エディタの直感的なWYSIWYG(見たままが得られる)動作に感銘を受けました。これはその後、ほとんどの現代のテキストエディタのデフォルトの動作になりました。彼はMITに戻り、AIラボのハッカーであるカール・ミケルセンがTECOにControl-Rと呼ばれる表示/編集モードを追加していました。これにより、ユーザーがキーストロークを入力するたびに画面表示が更新されました。ストールマンはこのモードを効率的に動作するように再実装し、 TECOの表示編集モードにマクロ機能を追加して、ユーザーが任意のキーストロークを再定義してTECOプログラムを実行できるようにしました[ 3 ] 。
EにはTECOにはないもう1つの機能があった。それはランダムアクセス編集だ。TECOはページシーケンシャルエディタで、コストの問題でコンピュータのメモリが一般的に小さかった時代に、 PDP-1上で紙テープを編集するために設計された。TECOの特徴は、ファイル内のページ順に一度に1ページずつしか編集できないことだった。Stallmanは、Eのようにディスク上でページランダムアクセスできるようにファイルを構造化する代わりに、TECOを改良して大きなバッファをより効率的に処理できるようにし、ファイル管理方法を、ファイル全体を単一のバッファとして読み書きするように変更した。現代のほとんどすべてのエディタはこの方法を採用している。
TECOの新バージョンはAIラボでたちまち人気となり、すぐにMACまたはMACS ( macroの略)で終わるカスタムマクロの大規模なコレクションが蓄積されました。2年後、ガイ・スティールは多様なマクロを1つのセットに統合するプロジェクトに着手しました。[ 22 ]スティールとストールマンによる完成版の実装には、新しいマクロセットを拡張および文書化する機能が含まれていました。[ 3 ]結果として生まれたシステムはEMACSと呼ばれ、これはEditing MACroS、またはE with MACroSの略です。後に、EMACSをEMACS Makes All Computing Simpleの再帰的頭字語として使用することが普及しました。これは、EMACSの他のバージョンで再帰的頭字語の使用が増加していることと一致しています。(下記参照)ストールマンは「当時ITSで<E>が略語として使用されていなかったため」Emacsという名前を選びました。 [ 23 ]真偽不明のハッカーの格言によると、このプログラムはボストンの人気アイスクリーム店であるEmack & Bolio'sにちなんで名付けられたという。 [ 24 ]最初の運用可能なEMACSシステムは1976年後半に存在した。[ 25 ]
ストールマンは、過剰なカスタマイズと事実上のフォークに問題があると考え、使用に関する一定の条件を設定しました。彼は後に次のように書いています。[ 25 ]
EMACSは共同共有を基本として配布されているため、すべての改良点は私に返却され、組み込まれて配布される必要があります。
オリジナルの Emacs は、ITS を実行している PDP-10 でのみ動作しました。その動作は TECO とは十分に異なっていたため、独立したテキスト エディタとみなすことができ、すぐに ITS の標準編集プログラムになりました。Mike McMahon はEmacs を ITS からTENEXおよびTOPS-20オペレーティングシステムに移植しました。Emacs の初期バージョンへの他の貢献者には、 Kent Pitman、Earl Killian、およびEugene Ciccarelliがいます。1979 年までに、Emacs は MIT の AI ラボおよびコンピュータ サイエンス研究所で使用される主要なエディタになりました。[ 26 ]


その後数年間、プログラマーたちは他のコンピュータシステム向けにさまざまなEmacsライクなエディタを作成した。これらには、 Mike McMahonとDaniel WeinrebがLispマシン向けに作成したEINE(EINE Is Not EMACS)とZWEI [ 27 ](ZWEI Was EINE Initially )、そしてOwen Theodore Andersonが作成したSine(Sine Is Not Eine)[ 28 ]が含まれる。WeinrebのEINEはLispで書かれた最初のEmacsだった。1978年、Bernard GreenbergはHoneywellのCambridge Information Systems LabでMultics Emacsをほぼ完全にMultics Lispで作成した。Multics Emacsは後にRichard Soleyによってメンテナンスされ、彼はNILプロジェクト向けにNILE Emacsライクなエディタを開発した。また、Barry Margolinもメンテナンスを行った。GNU Emacsを含む多くのEmacsバージョンは、後に拡張言語としてLispを採用することになる。
後にNeWSやJavaプログラミング言語を発明することになるジェームズ・ゴスリングは、1981年にGosling Emacsを開発した。Unix上で動作する最初のEmacsライクなエディタであるGosling EmacsはC言語で書かれ、Lispに似た構文を持つMocklispを拡張言語として使用していた。
Computer Corporation of AmericaのCCA EMACS (Steve Zimmerman)の初期の広告は1984 年に登場しました。 [ 29 ] CCA EMACS は元々 Warren Montgomery の EMACS をベースにしていましたが、徐々に書き換えられ、1983 年に商用リリースされる頃には Montgomery のコードは一切残っていませんでした。[ 30 ] CCA EMACS は、オリジナルの PDP-10 EMACS ( Richard Stallmanによって書かれた) をできるだけ忠実にエミュレートするように書かれ、同時に多くの新しいコマンドも追加されました。1984 年に、他のバージョンの Emacs との競争で、MIT の Project Athena のサイトライセンスを獲得しました。


リチャード・ストールマンは、1984 年に、プロプライエタリな Gosling Emacs のフリー ソフトウェア代替品を作成するために GNU Emacs の開発に着手しました。GNU Emacs は当初 Gosling Emacs をベースにしていましたが、ストールマンが Mocklisp インタープリタを真の Lisp インタープリタに置き換えたため、ほぼすべてのコードを書き直す必要がありました。これが、黎明期の GNU プロジェクトによってリリースされた最初のプログラムとなりました。GNU Emacs はCで記述されており、拡張言語として同じく C で実装されたEmacs Lispを提供しています。最初の公開リリースであるバージョン 13 は、1985 年 3 月 20 日に作成されました。広く配布された最初の GNU Emacs のバージョンは、1985 年後半にリリースされたバージョン 15.34 でした。初期の GNU Emacs のバージョンは1.xxと番号付けされており、最初の数字は C コアのバージョンを示しています。バージョン 1.12 以降、メジャー番号は変更されないと考えられたため、 1は削除され、番号は1から13にスキップされました。[ 31 ] 2014 年 9 月、GNU emacs-devel メーリングリストで、GNU Emacs が迅速なリリース戦略を採用し、今後バージョン番号がより速く増加すると発表されました。[ 32 ]
GNU Emacs は Gosling Emacs よりも多くの機能を提供し、特に拡張言語としてフル機能の Lisp を備えており、すぐに Gosling Emacs に代わって事実上のUnix Emacs エディタとなった。Markus Hess は1986 年のクラッキング活動で GNU Emacs の電子メールサブシステムのセキュリティ上の欠陥を悪用し、 Unix コンピュータへのスーパーユーザーアクセス権を獲得した。[ 33 ]
GNU Emacs の機能のほとんどは、Emacs Lispと呼ばれるスクリプト言語によって実装されています。GNU Emacs の約 70% は Emacs Lisp 拡張言語で記述されているため、[ 34 ] Emacs Lisp インタープリタを実装する C コアを移植するだけで済みます。これにより、ネイティブ コードのみで構成される同等のプロジェクトを移植するよりも、Emacs を新しいプラットフォームに移植する方がはるかに簡単になります。
GNU Emacs の開発は 1999 年まで比較的閉鎖的で、 『The Cathedral and the Bazaar』ではCathedral開発スタイルの例として使われていました。その後、プロジェクトは公開開発メーリングリストと匿名CVSアクセスを採用しました。開発は 2008 年まで単一の CVS トランクで行われ、その後 Bazaar DVCSに切り替えられました。2014 年 11 月 11 日、開発はGitに移行されました。[ 35 ]

リチャード・ストールマンはGNU Emacsの主要メンテナーであり続けているが、時折その役割から身を引いている。ステファン・モニエとチョン・イードンは2008年から2015年までメンテナーを務めた。[ 36 ] [ 37 ]ジョン・ウィーグリーは、MITでストールマンと会った後、2015年にメンテナーに任命された。[ 38 ]ウィーグリーは2018年に辞任し、[ 39 ]エリ・ザレツキーが主任メンテナーとなった。ステファン・カンガスは2023年に共同メンテナーに任命され、[ 40 ]アンドレア・コラロは2024年にザレツキーとカンガスに加わった。[ 41 ]
2025年現在、GNU Emacsの歴史を通じて1,608人のコミッターが参加している。 [ 42 ]

Lucid Emacs は、GNU Emacs 19 の初期アルファ版をベースに、1991 年にLucid Inc.のJamie Zawinskiらによって開発が開始されました。フリーソフトウェア開発における最も有名な初期の分岐の 1 つは、2 つの Emacs バージョンのコードベースが分岐し、別々の開発チームがそれらを単一のプログラムに統合する努力を中止したときに発生しました。[ 43 ] Lucid Emacs はその後XEmacsと改名されました。その開発は現在非常に遅く、最新の安定版 21.4.22 は 2009 年 1 月にリリースされ、最新のベータ版は 2025 年 6 月にリリースされています。[ 44 ]一方、GNU Emacs は、以前は XEmacs のみであった多くの機能を実装しています。[ 45 ]
その他の注目すべきフォークには以下のようなものがあります。



過去には、Emacs の小型版を作成するプロジェクトが数多く存在した。GNU Emacs は当初、32 ビットのフラット アドレス空間と少なくとも 1 MiBの RAM を備えたコンピュータを対象としていた。[ 47 ] 1980 年代には、そのようなコンピュータはハイエンドのワークステーションやミニコンピュータであり、そのため、一般的なパーソナルコンピュータのハードウェアで動作する小型の再実装が必要となった。今日のコンピュータは、これらの制限を解消するのに十分すぎるほどのパワーと容量を備えているが、最近では、ソフトウェアのインストール ディスクに収まるように、または性能の低いハードウェアで使用するために、小型のクローンが設計されている。[ 48 ]
他のプロジェクトでは、EmacsをLispの別の方言、あるいは全く別のプログラミング言語で実装することを目指している。すべてが現在も活発にメンテナンスされているわけではないが、これらのクローンには以下のようなものがある。
Emacsは主にテキストエディタであり、テキストの操作を目的として設計されていますが、LaTeX、Ghostscript 、 Webブラウザなどの外部プログラムと連携することで、ワープロソフトのように文書の書式設定や印刷を行うことも可能です。Emacsは、単語、文、段落といったテキストの単位や、関数などのソースコード構造を操作し、異なる形式で表示するためのコマンドを提供します。また、ユーザーが定義した編集コマンドのバッチを実行するためのキーボードマクロも備えています。
GNU Emacsはリアルタイム表示エディタであり、編集内容は画面上にリアルタイムで表示されます。これは現代のテキストエディタでは標準的な動作ですが、EMACSはこれをいち早く実装したエディタの一つです。代替手段としては、テキストを表示するための個別のコマンドを発行する必要があり(例えば、テキストを変更する前や後など)、これはQED(BTS、CTSS、Multics)、ed(Unix)、ED(CP/M)、Edlin(DOS)といった、初期の(あるいは単にシンプルな)行エディタやコンテキストエディタでは一般的でした。
Emacs のほぼすべての機能、例えばファイルへの文字挿入といった基本的な編集操作などは、Lisp プログラミング言語の方言で書かれた関数によって実現されています。GNU Emacs で使用されている方言はEmacs Lisp (Elisp) と呼ばれ、Emacs をGNUおよびUnixに移植するために特別に開発されました。Emacs Lisp レイヤーは、 C プログラミング言語で書かれた安定したコアとなる基本サービスとプラットフォーム抽象化の上に構築されており、エディタの大部分が稼働している Lisp システムの実装セマンティクスを変更することなく、GNU Emacs をさまざまなオペレーティングシステムやアーキテクチャに移植できます。この Lisp 環境では、 Emacs を再構築または再起動することなく変数や関数を変更でき、コアエディタ機能の新たに定義されたバージョンでさえ、非同期でコンパイルされ、ライブ環境にロードされて既存の定義と置き換えられます。最新の GNU Emacs では、Emacs Lisp のバイトコードとネイティブコードの両方のコンパイルが可能です。
すべての設定は変数、クラス、データ構造に格納され、これらをリアルタイムで更新するだけで変更できます。この場合、Lisp 方言を使用することが大きな利点となります。Lisp 構文は、いわゆる記号式(または sexpr) で構成されており、評価可能なコード式としても、XML、JSON、YAMLなどのよく知られた形式に似ているものの、よりシンプルで汎用的なデータシリアル化形式としても機能します。このように、既存の機能をカスタマイズすることと新しい機能を作成することの間には、実際にはほとんど違いがなく、どちらも同じ基本的な方法で実現されます。これは、たとえばVS Codeのような最新の拡張可能なエディタのほとんどとは動作的に異なります。VS Codeでは、エディタのインターフェイスと機能を実装し、ユーザー定義の設定とオプションをエンコードするために、別々の言語が使用されます。 Emacsのオープンな設計の目標は、Emacs開発者がgitツリーで作業する場合と同様に、通常の使用時にEmacsの内部構造をEmacsユーザーに透過的に公開すること、そして初心者ユーザーにも安定した実用的で応答性の高い編集環境を提供しつつ、Emacsの使用とEmacsのプログラミングの区別を可能な限りなくすことです。
テキスト編集における主要なデータ構造はバッファであり、これはデータ(通常はテキスト)とそれに関連付けられた属性を含むメモリ領域です。これらの属性の中で最も重要なものは次のとおりです。
特にモードはEmacsの重要な概念であり、Emacsの機能を特定のバッファのデータに関連する動作とキーバインドのセットに分解するメカニズムを提供します。メジャーモードは、バッファのデータとユーザーがそれとやり取りする方法(特定の言語でのソースコードの編集、16進数の編集、ファイルシステムの表示、gitとのやり取りなど)に関連する関数とコマンドの一般的なパッケージを提供し、マイナーモードは、多くのメジャーモードに共通して適用できる機能の補助的なコレクションを定義します(などauto-save-mode)。マイナーモードは、各バッファに対してローカルに、またすべてのバッファに対してグローバルにオン/オフを切り替えることができますが、メジャーモードはバッファごとにのみ切り替えることができます。バッファに関連するがモードにバンドルされていないその他のデータは、そのバッファにフォーカスを当てて、関連するデータを直接ライブで変更することで処理できます。
エディタとのあらゆるインタラクション(キーの押下やマウスボタンのクリックなど)は、Emacs Lisp コード(通常はコマンド)を評価することによって実現されます。コマンドは、対話的に使用するために明示的に設計された関数です。キーは任意に再定義でき、コマンドは名前でアクセスすることもできます。一部のコマンドは、ユーザーが提供した任意の Emacs Lisp コードをさまざまな方法で評価します(たとえば、関数群、、、または個々のeval-に対して動作する関数など)。最も単純なユーザー入力(印刷可能な文字など)でさえ、Emacs Lisp 関数として実行されます。たとえば、は、標準的なテキスト編集バッファのほとんどのキーボードキーにデフォルトで割り当てられており、呼び出しに使用されたキーを関連付けられたロケール定義の文字にマッピングします。bufferregionexpressionself-insert-command
例えば、fテキスト入力を受け付けるバッファでキーを押すと、コードが評価され、文字定数のコピーがの位置に1 つ挿入されます。この場合、 は Emacs がユニバーサル引数と呼ぶものによって決定されます。すべての Emacs コマンド コードは数値を受け取ります。最も単純な使用法では、この数値はアクションの繰り返しを示しますが、より複雑なケース (繰り返しが意味をなさない場合) では、他の動作を引き起こす可能性があります。これらの引数は、+などのコマンド プレフィックスを介して指定できます。より簡潔に+と指定すると、 に展開されます。プレフィックスが指定されていない場合、ユニバーサル引数は です。すべてのコマンドは暗黙的に 1 回実行されますが、このようなプレフィックスが指定されている場合は、複数回呼び出されたり、別の方法で呼び出されたりする可能性があります。このような引数は、意味が通じる場合は非正になることもあります。引数を受け取る関数が、その関数自身の意味論に従って、指定された数値が何を意味するかを決定する必要があります。一般的な使用例としては、関数が普遍引数の符号をチェックするだけで逆の動作を実行するというものがあります。たとえば、デフォルトでは順方向にソートし、負の引数で呼び出された場合は逆方向にソートするソートコマンド(引数の絶対値をソートキーとして使用)(例:列インデックス(または区切り文字)7による逆方向ソート)、または、互いに単純に負の値であるアンドゥ/リドゥ(一度に一定数のステップで差分の再帰的な履歴を順方向と逆方向にたどる)などがあります。(self-insert-command1?f)?f1Controlu7fMeta7f(self-insert-command7?f)1-7
Emacs は比較的多くのコマンド語彙を備えているため、アクションを実行するために必要なキーストロークを簡潔に表現する、長年確立されたコマンド言語を備えています。このコマンド言語は、次のシフトキーと修飾キーを認識します: 、、、、、。これらのすべてが IBM スタイルのキーボードにあるとは限りませんが、通常は必要に応じて構成できます。これらはコマンド言語で、それぞれプレフィックスとして表されます: 、、、、、。名前が 1 文字以上でしか印刷できないキーは、山括弧で囲まれます。したがって、+ + + ( Excelで開いているすべてのワークブックの依存する数式をチェックし、すべてのセルを計算する) のようなキーボードショートカットは、Emacs コマンド言語では とレンダリングされ、 + + + (ファイル名に一致する正規表現によるインクリメンタルファイル検索)のような Emacs コマンドはと表現されます。コマンド言語は、ショートカットが割り当てられていないコマンドを呼び出すために必要なアクションを表現するためにも使用されます。たとえば、コマンド(一時的なテキストの保存と操作のためにメモリ内のバッファを初期化するコマンド)がユーザーによって呼び出されると、Emacs はコンテキストで使用可能なコマンドの名前空間をスキャンして、それを一意に語彙化する最短のキーストロークシーケンスを返すため、として報告されます。CtrlAlt⇧ ShiftMetaSuperHyperC-A-S-M-s-H-CtrlAlt⇧ ShiftF9C-A-S-<f9>MetasfCtrlMetasM-s f C-M-sscratch-bufferM-x scra <return>
Emacsは現代のグラフィカルユーザーインターフェースの標準用語よりも前に開発されたため、馴染みのあるインターフェース要素に対してやや異なる名称を使用しています。Emacsユーザーが操作するデータであるバッファは、ターミナル画面またはGUIウィンドウのタイル状の部分であるウィンドウ内にユーザーに表示されます。Emacsではこれをフレームと呼びます。現代の用語では、Emacsのフレームはウィンドウ、Emacsのウィンドウはパネルまたはスプリットに相当します。設定によっては、ウィンドウにはスクロールバー、行番号、ナビゲーションを容易にするための「ヘッダー行」、下部のモード行(通常はバッファ名、アクティブなモード、バッファの位置などを表示)が含まれる場合があります。すべてのフレームの下部は、出力メッセージ(「エコーエリア」と呼ばれる)とコマンドのテキスト入力(「ミニバッファ」と呼ばれる)に使用されます。
一般的に、Emacsの表示要素(ウィンドウ、フレームなど)は、特定のデータやプロセスに属しません。バッファはウィンドウに関連付けられておらず、複数のウィンドウを同じバッファ上に開くことができます。たとえば、長いテキストの異なる部分をスクロールせずに並べて表示したり、複数のバッファで同じテキストを共有したりできます。たとえば、複数の言語が混在するファイルで、異なるメジャーモードを活用したりできます。同様に、Emacsインスタンスは特定のフレームに関連付けられておらず、複数のフレームを開いて単一のEmacsプロセスを表示できます。たとえば、マルチモニター環境で画面ごとに1つのフレームを表示したり、リモートシステムからsshで接続されたターミナルフレームと、ローカルシステムのモニターで同じEmacsプロセスを表示するグラフィカルフレームを表示したりできます。
バッファがウィンドウを必要としないのと同様に、Emacs プロセスの実行にはフレームは必要なく、一般的な使用パターンの 1 つは、Emacs を編集サーバーとして展開することです。つまり、ヘッドレスデーモンとして実行し、フレームを生成するクライアントを介して接続します。このサーバーは、クライアント プログラムをユーザーの変数として宣言するだけで、エディタが必要なあらゆる状況で使用できるようになりますEDITOR。VISUALこのようなサーバーはバックグラウンドで実行され続け、子プロセスを管理し、開いているパイプ、ポート、または FIFO から標準入力を蓄積し、定期的なまたは事前にプログラムされたアクションを実行し、編集セッション間でバッファのアンドゥ履歴、保存されたテキスト スニペット、コマンド履歴、およびその他のユーザー状態を記憶します。この動作モードでは、Emacs はscreenやtmuxなどのプログラムの機能と重複します。
Emacsは表示に関する事項と編集機能を分離しているため、ダム端末よりも複雑なあらゆるデバイスでほぼ同様に表示できます。これには、十分な機能を備えたテキスト端末上で典型的なグラフィカルなWIMP要素を提供することも含まれます。ただし、グラフィカルフレームは推奨される表示モードであり、テキスト端末フレームの機能の厳密な上位セットを提供します。
(set-default-coding-systems 'utf-8)(global-set-key(kbd"C-x C-b")'ibuffer)after-save-hook)。初代Emacsには、すべてのコマンド、変数、内部関数に関するドキュメントを含むヘルプライブラリが搭載されていました。そのため、Emacsの支持者たちは、Emacsが通常の機能と現在の状態に関する情報をユーザーに提示するという意味で、自己文書化ソフトウェアであると評しました。各関数には、要求に応じてユーザーに表示されるドキュメント文字列が含まれており、この手法は後にLisp、Java、Perl、Pythonなどのプログラミング言語にも広まりました。このヘルプシステムは、組み込みライブラリであろうと、追加されたサードパーティライブラリであろうと、各関数の実際のコードにユーザーを誘導することができます。
Emacsにはチュートリアルが内蔵されています。Emacsを起動した際に編集するファイルがない場合、簡単な編集コマンドの実行方法やチュートリアルの起動方法が表示されます。このチュートリアルは、Stuart Cracraft氏とRichard Stallman氏によって作成されました。
リチャード・ストールマンが創設したエマック教会は、エマックユーザーのために作られたパロディ宗教である。 [ 56 ] viを獣のエディタ(vi-vi-viはローマ数字で6-6-6 )と呼ぶが、viの使用に反対しているわけではなく、むしろそれをプロプライエタリソフトウェアの忌まわしいものと呼んでいる。(「 viの無料版を使うことは罪ではなく、償いである。」[ 57 ])エマック教会には、このパロディ宗教を支持すると称する投稿がある独自のニュースグループalt.religion.emacs [ 58 ]がある。viの支持者は、反対のviカルトを創設した。[ 59 ]
ストールマンは冗談で自分をEmacs教会の聖人であるSt I GNU ciusと呼んでいる。 [ 60 ]これはキリスト教で崇敬されている初期教父アンティオキアのイグナティウスにちなんだものである。
Emacsの修飾キーへの依存度が高いことが、Emacs小指症と呼ばれる反復性ストレス障害の原因であるという言い伝えがあるが、Emacsが他のキーボード操作の多いコンピュータプログラムよりも多くの問題を引き起こすことを示す研究は行われていない。
ユーザーはさまざまな方法でこの問題に対処してきました。一部のユーザーは、左手の小指に過度の負担をかけないように、タッチタイピング中にShiftキーのように一般的なPCキーボードの2つのControlキーを使用することを推奨しており、キーボードの適切な使用によりRSIが軽減されます。 [ 61 ]
ergoemacs-mode)。[ 62 ]evil-mode高度なVimエミュレーションレイヤー。god-modeこれは、vimと同様のアプローチを提供し、修飾キーなしでEmacsコマンドを入力できるモードを備えています。evil-modegod-modeM-x <command-name>ハードウェアソリューションとしては、Kinesis社のContoured Keyboardのように、修飾キーを親指で簡単に操作できる位置に配置したものや、Microsoft Natural Keyboardのように、大きな修飾キーがキーボードの両側に左右対称に配置され、手のひらで押せるものなど、特殊なキーボードが挙げられます。フットペダルを使用することもできます。
Emacsにおける小指の役割は、比較的新しいものです。Emacsが開発されたSpace-cadetキーボードには、スペースバーの隣に特大のControlキーがあり、親指で簡単に操作できました。
emacsという単語は、 boxenやVAXenと音韻的に類似して、Emacs のさまざまな種類を指す場合にemacsenと複数形になることがあります。 [ 66 ]
エディタが「emacs」と呼ばれるためには、マクロ言語だけでなく、実際のプログラミング言語で完全に拡張可能であることが主な要件です。
Emacs は、Emacs ファミリーのエディタの中で最も人気があり、広く普及しています。
最後に、イライラしている場合は、有名な心理療法士のエリザに問題を話してみてください。ただ、Mx ドクターに頼んでください。
「EMACS自体は、もともと標準化プロジェクトとして始まったんです」とガイ・スティールはメールで述べている。
生意気な初心者がかつてスタールマンに言った。「エディタが Emacs と呼ばれる理由は推測できますが、なぜジャスティファイアが Bolio と呼ばれるのですか?」。スタールマンは力強く答えた。「名前は名前にすぎない。Emack & Bolio's はボストンの町で人気のアイスクリーム店の名前だ。この2人はソフトウェアとは何の関係もない。」質問は解決したようで、答えられていないまま、初心者は立ち去ろうとしたが、スタールマンは彼に呼びかけた。「Emacs も Bolio もアイスクリーム店とは何の関係もない。」
私は史上2番目のEmacs、つまりLispマシン実装を書きました。その仕様は「StallmanのPDP-10(オリジナル)Emacsがやることを行う」というもので、そこから開発を進めました。とにかく膨大な量です。私とマイク・マクマホンは、ZWEI/Zmacsを作るために、膨大な数のコマンドを実装するのに途方もない時間を費やしました。
振り返ってみると、24.3 は 25.1 に、24.4 は 26.1 にすべきでした。.N は
バグ
修正リリースにのみ使用すべきであり、24.3、24.4、そして以前計画されていた 24.5 はいずれもバグ修正リリースではありません。
1985年当時、仮想メモリのない1メガバイトのマシンを使っている人たちがいました。彼らはGNU Emacsを使いたいと思っていました。そのため、プログラムをできるだけ小さく保つ必要がありました。
現代のコンピュータは、Emacsを瞬時に起動して実行するのに十分なリソースを備えており、おそらくEmacsがあなたの求めるものでしょう。Zileは、小さく、高速で、強力なEmacsクローンです。小さなインストール(フロッピーディスクなど)、メモリの少ないマシン、または特にリモートマシンやrootなどの別のユーザーとして行うクイック編集セッションに役立ちます。
タッチタイピングでは、修飾キーは ⇧ Shift キーのようにペアになっています。修飾キーの組み合わせを押す人間工学的に推奨される方法は、片手で修飾キーを押し、もう一方の手で文字キーを押すことです。両手を使うことで、片手で筋肉を酷使することを避けられます。