Emacs

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
Emacs
Org、Magit、およびDiredをmodus-operanditheme.pngで表示するEmacs27
GNU EmacsのOrg-modeMagit、およびDiredバッファー
原作者デビッド・A・ムーン
ガイ・L・スティール・ジュニア
開発者ボランティアや商用開発者を含む、さまざまな自由/自由ソフトウェア開発者
初回リリース1976 ; 46年前[1] [2] (1976
で書かれているLispC
オペレーティング・システムクロスプラットフォーム
タイプテキストエディタ
Webサイトwww .gnu .org / software / emacs ウィキデータでこれを編集する

Emacs / ˈiːmæks /またはEMACSエディターMACroS[ 3] [4] [5]は、拡張性を特徴とするテキストエディターファミリーです[6]最も広く使用されているバリアントである[7] GNU Emacsのマニュアルでは、「拡張可能で、カスタマイズ可能で、自己文書化された、リアルタイムのディスプレイエディタ」と説明されています。[8] 最初のEmacsの開発は1970年代半ばに始まり、その直系の子孫であるGNUEmacsの作業は2022年まで活発に続けられています。

Emacsには10,000を超える組み込みコマンドがあり、そのユーザーインターフェイスにより、ユーザーはこれらのコマンドをマクロに組み合わせて作業を自動化できます。Emacsの実装は通常、深い拡張機能を提供するLispプログラミング言語の方言を特徴としており、ユーザーと開発者がエディター用の新しいコマンドとアプリケーションを作成できるようにします。メールファイルアウトラインRSSフィード[9]や、 ELIZAPongConway's LifeSnakeTetrisのクローンを管理するための拡張機能が作成されています。[10]

オリジナルのEMACSは、1976年にDavid A.MoonとGuyL。SteeleJr 。によってTECOエディターのエディターMACroSのセットとして作成されました[2] [3] [4] [5] [11]これは、TECOマクロ編集者のTECMACとTMACSのアイデアに触発されました。[12]

最も人気があり、最も移植されたバージョンのEmacsは、GNUEmacsです。これはGNUProjectのためにRichardStallmanによって作成さまし[13] XEmacsは、 1991年にGNU Emacsから分岐したバリアントです。GNUEmacsとXEmacsは、同様のLisp方言を使用し、ほとんどの場合、相互に互換性があります。XEmacsの開発は非アクティブです。

Emacsは、 viとともに、 Unix文化の伝統的なエディタ戦争における2つの主要な候補の1つです。Emacsは、まだ開発中の最も古いフリーでオープンソースのプロジェクトの1つです。[14]

歴史

Emacsは、 MITで多くの異なるTECOコマンドセットとキーバインディングを統合するプロジェクトとしてGuy L. SteeleJr。によって開始されました[4]。
デビッドA.ムーン

Emacsの開発は1970年代にMITAIラボで始まりました。MITAIラボPDP-6およびPDP-10コンピューターは、テープエディターおよびコレクターと呼ばれるデフォルトのラインエディターを備えた互換性のないタイムシェアリングシステム(ITS)オペレーティングシステムを使用していました。(TECO)。最新のテキストエディタとは異なり、TECOは、ユーザーがテキストを追加したり、既存のテキストを編集したり、ドキュメントを表示したりする個別のモードを使用していました。TECOに文字を入力してドキュメントに直接文字を配置することはできませんが、代わりにTECOコマンド言語で文字( 'i')を入力して、入力モードに切り替え、必要な文字を入力するように指示します。その間に、編集されたテキストが画面に表示されなかったので、最後に文字(<esc>)を入力して、エディターをコマンドモードに戻します。(オーバータイピングを可能にするために同様の手法が使用されました。)この動作は、プログラムedの動作と似ています。

リチャード・ストールマンは1972年または1974年にスタンフォードAIラボを訪れ[要出典] 、フレッド・ライトが書いたラボのEエディターを見ました。[16]彼は、編集者の直感的なWYSIWYG (What You See Is What You Get)の動作に感銘を受けました。これは、その後、ほとんどの最新のテキストエディターのデフォルトの動作になっています。彼はMITに戻り、AIラボのハッカーであるCarl Mikkelsenが、ユーザーがキーストロークを入力するたびに画面表示を更新できるControl-Rと呼ばれる表示/編集の組み合わせモードをTECOに追加しました。ストールマンはこのモードを再実装して効率的に実行し、マクロを追加しましたユーザーがTECOプログラムを実行するために任意のキーストロークを再定義できるようにするTECO表示編集モードの機能。[5]

Eには、TECOに欠けていたもう1つの機能、ランダムアクセス編集がありました。TECOは、PDP-1で紙テープを編集するために設計されたページシーケンシャルエディタであり、通常、ファイル内のページの順序で一度に1ページしか編集できませんでした。ストールマンは、ディスク上のページランダムアクセス用にファイルを構造化するというEのアプローチを採用する代わりに、大きなバッファーをより効率的に処理するようにTECOを変更し、ファイル管理方法を変更して、ファイル全体を単一のバッファーとして読み取り、編集、および書き込みました。最近のほとんどすべての編集者はこのアプローチを使用しています。

新しいバージョンのTECOは、AIラボですぐに普及し、すぐに、名前がMACまたはMACSで終わることが多いカスタムマクロの大規模なコレクションを蓄積しました。これは、マクロの略です2年後、ガイ・スティールは多様なマクロを1つのセットに統合するプロジェクトに着手しました。[17] SteeleとStallmanの完成した実装には、新しいマクロセットを拡張および文書化するための機能が含まれていました。[5]結果として得られたシステムはEMACSと呼ばれ、MACroSの編集、あるいはEとMACroSの略でした。ストールマンは、「当時、ITSの略語として<E>が使用されていなかったため」、Emacsという名前を選びました。[18 ]外典 ハッカー公案は、このプログラムは、ケンブリッジの人気アイスクリーム店であるEmack&Bolio'sにちなんで名付けられたと主張しています。[19]最初の運用可能なEMACSシステムは1976年後半に存在しました。[20]

ストールマンは、あまりにも多くのカスタマイズと事実上の分岐に問題を見出し、使用のための特定の条件を設定しました。[要出典]彼は後で書いた:[20]

EMACSは共同共有に基づいて配布されました。つまり、すべての改善点を私に還元して、組み込み、配布する必要があります。

TECOのようなオリジナルのEmacsは、ITSを実行しているPDP-10でのみ実行されていました。その動作はTECOの動作とは十分に異なっていたため、それ自体がテキストエディタと見なすことができ、すぐにITSの標準編集プログラムになりました。Mike McMahonは、EmacsをITSからTENEXおよびTOPS-20オペレーティングシステムに移植しました。Emacsの初期バージョンへの他の貢献者には、Kent PitmanEarl Killian、およびEugeneCiccarelliが含まれます。1979年までに、EmacsはMITのAIラボとそのコンピューターサイエンス研究所で使用されるメインエディターになりました。[21]

実装

初期の実装

James Goslingは、 1981年にUnixGosling Emacs )で実行される最初のEmacsのようなエディターを作成しました。

翌年、プログラマーは他のコンピューターシステム用にEmacsのようなさまざまなエディターを作成しました。これらには、MikeMcMahonとDanielWeinrebによってLispマシン用に作成されたEINEEINE Is Not EMACS)とZWEI [22]ZWEI Was EINE Initially、およびSine(Sine Is Not Eine[23]が含まれています。オーウェンセオドアアンダーソンによる。WeinrebのEINEは、Lispで書かれた最初のEmacsでした。1978年、BernardGreenbergMulticsEmacsをHoneywellのMulticsLispでほぼ完全に作成しました。のケンブリッジ情報システム研究所。Multics Emacsは、後にNILプロジェクト用のNILEEmacsのようなエディターを開発したRichardSoleyと、BarryMargolinによって保守されました。GNU Emacsを含むEmacsの多くのバージョンは、後で拡張言語としてLispを採用するでしょう。

後にNeWSJavaプログラミング言語発明したJamesGoslingは、1981年にGosling Emacsを作成しました。Unixで実行される最初のEmacsのようなエディタであるGoslingEmacsは、 Cで記述され、Lispのような構文を持つ言語であるMocklispを使用しました。拡張言語。

Computer Corporation ofAmericaのCCAEMACS(Steve Zimmerman)の初期の広告。[24]は1984年に登場しました。[25] 1985年のGNUEmacsとの比較では、無料対$ 2,400について言及されていました。[26] [無関係な引用]


GNU Emacs

テキストコンソールで実行されているGNUEmacs
MicrosoftWindows上で実行されているGNUEmacs

Richard Stallmanは、1984年にGNU Emacsの開発に着手し、独自のGoslingEmacsに代わる無料のソフトウェアを作成しました。GNUEmacsは当初GoslingEmacsに基づいていましたが、StallmanがMocklispインタープリターを真のLispインタープリターに置き換えるには、ほぼすべてのコードを書き直す必要がありました。これは、初期のGNUプロジェクトによってリリースされた最初のプログラムになりました。GNU EmacsはCで書かれており、拡張言語としてCでも実装されているEmacsLispを提供します。最初の公開リリースであるバージョン13は、1985年3月20日に作成されました。GNUEmacsの最初の広く配布されたバージョンはバージョン15.34で、1985年後半にリリースされました。GNUEmacsの初期バージョンには1.xxという番号が付けられました。、最初の数字はCコアのバージョンを示します。バージョン1.12以降、メジャー番号は変更されないと考えられていたため、1は削除されました。そのため、番号付けは1から13スキップされました。[27] 2014年9月、GNU emacs-develメーリングリストで、GNU Emacsが迅速なリリース戦略を採用し、バージョン番号が将来より迅速に増加することが発表されました。[28]

GNUEmacsは後にUnixに移植されました。Gosling Emacsよりも多くの機能、特に拡張言語としてフル機能のLispを提供し、すぐに事実上のUnixEmacsエディターとしてGoslingEmacsに取って代わりました。Markus Hessは、1986年にGNU Emacsの電子メールサブシステムのセキュリティ上の欠陥を悪用し、スーパーユーザーがUnixコンピュータにアクセスできるようになりました。[29]

GNU Emacsの機能のほとんどは、EmacsLispと呼ばれるスクリプト言語を介して実装されますGNU Emacsの約70%はElisp拡張言語で書かれているため[30]、Elispインタープリターを実装するCコアを移植するだけで済みます。これにより、Emacsを新しいプラットフォームに移植することは、ネイティブコードのみで構成される同等のプロジェクトを移植するよりもかなり難しくなりません。

GNU Emacsの開発は1999年まで比較的閉鎖されており、CathedralとBazaarでのCathedral開発スタイルの例として使用されていましたその後、プロジェクトは公開開発メーリングリストと匿名のCVSアクセスを採用しました。開発は2008年まで単一のCVSトランクで行われ、その後BazaarDVCSに切り替えられました。2014年11月11日、開発はGitに移されました。[31]

RichardStallmanはGNUEmacsの主要なメンテナーであり続けていますが、彼は時々その役割を辞任しました。ステファン・モニエとチョン・イドンは2008年から2015年まで保守者でした。[32] [33]ジョン・ウィーグレーはMITでストールマンと会った後、2015年に保守者に指名されました。[34] 2014年の初めの時点で、GNUEmacsにはその歴史を通じて579人のコミッターがいます。[35]

XEmacs

GNU Emacs19の初期アルファバージョンに基づくLucidEmacsは、1991年にLucidIncのJamieZawinskiらによって開発されましフリーソフトウェア開発で最も有名な初期フォークの1つは、2つのEmacsバージョンのコードベースが分岐したときに発生しました。そして、別々の開発チームは、それらを単一のプログラムに統合する努力をやめました。[36] LucidEmacsはその後XEmacsに名前が変更されました。その開発は現在非アクティブであり、最新の安定バージョン21.4.22が2009年1月にリリースされました(ベータ版は2013年にリリースされました)が、GNUEmacsは以前はXEmacsのみの機能を多数実装しています。[37] [より良い情報源が必要]

GNUEmacsの他のフォーク

その他の注目すべきフォークは次のとおりです。

  • Aquamacs – GNU Emacsに基づいています(Aquamacs3.2はGNUEmacsバージョン24に基づいており、Aquamacs3.3はGNUEmacsバージョン25に基づいています)。これは、AppleMacintoshユーザーインターフェイスとの統合に重点を置いています。
  • Meadow – MicrosoftWindows用の日本語版[38]
  • SXEmacs – SteveYoungsによるXEmacsのフォーク[39]

さまざまなEmacsエディター

OpenBSD5.3mgの小さなEmacsのようなエディタRubyソースコードの編集
Debianボックスで実行されているJOVE

過去には、Emacsの小さなバージョンを作成することを目的としたプロジェクトが急増していました。GNU Emacsは当初、32ビットのフラットアドレス空間と少なくとも 1MiBのRAMを搭載したコンピューターを対象としていました。[40] そのようなコンピューターは、1980年代にはハイエンドのワークステーションミニコンピューターであり、これにより、一般的なパーソナルコンピューターハードウェアで実行されるより小さな再実装が必要になりました今日のコンピューターには、これらの制限を排除するのに十分な電力と容量がありますが、最近では、ソフトウェアインストールディスクに収まるように、または機能の低いハードウェアで使用するために、小さなクローンが設計されています。[41]

他のプロジェクトは、Lispの異なる方言またはまったく異なるプログラミング言語でEmacsを実装することを目的としています。すべてがまだ積極的に維持されているわけではありませんが、これらのクローンには次のものが含まれます。

  • MicroEMACSは、もともとDave Conroyによって作成され、Daniel Lawrenceによってさらに開発され、多くのバリエーションがあります。
  • mgは元々MicroGNUEmacsと呼ばれ、後にmg2aは、GNUEmacsにより類似することを目的としたMicroEMACSのパブリックドメインの派生物です。現在、 OpenBSDにデフォルトでインストールされています
  • JOVE(Jonathan独自のバージョンのEmacs)、UNIXライクなシステム用のJonathanPayneのプログラム不可能なEmacs実装。
  • MINCE(MINCE Is Not Complete Emacs)、CP / M以降のDOS用のバージョン、Mark of theUnicornから。MINCEはFinalWordに進化し、最終的にBorlandSprintワードプロセッサになりまし
  • パーフェクトライター、MINCEから派生したCP / M実装で、1982年頃にデフォルトのワードプロセッサとしてKayproIIおよびKayproIVの最も初期のリリースに含まれていました。その後、 WordStarの代わりにKaypro10が提供されました
  • Freemacsは、テキストマクロ拡張に基づく拡張言語を使用し、元の64KiBフラットメモリ制限内に収まるDOSバージョンです。
  • ジレZileはZile I s L ossy E macs 再帰的頭字語でした[42]、プロジェクトはLuaで書き直され、ZileがLuaEditorsを実装するように拡張されました。新しいZileには、Zemacsと呼ばれるLuaでのEmacsの実装がまだ含まれています。Ziと呼ばれるviの実装もあります。
  • Zmacsは、MIT Lisp Machineとその子孫のために、ZetaLispに実装されています。
  • Climacs 、 CommonLispに実装されたZmacsの影響を受けたバリアント
  • Epsilon[43] LugaruSoftwareによるEmacsクローン。このリリースには、DOS、Windows、Linux、FreeBSD、Mac OS X、およびO / S2のバージョンがバンドルされています。これは、C構文の非Lisp拡張言語を使用し、シングルタスクMS-DOSで非常に初期の同時コマンドシェルバッファ実装を使用していました。
  • PceEmacsは、 SWI-Prolog用のEmacsベースのエディターです
  • Amacs、BrianFoxによって6502アセンブリで実装されたEmacsのAppleIIProDOSバージョン。[44] [45]
  • ヘムロック、元々はSpice Lispで書かれ、次にCommonLispで書かれました。CMU CommonLispの一部ですZmacsの影響を受けます。その後、Lucid Common Lisp(Helixとして)、LispWorks、およびClozureCLプロジェクトによってフォークさましいくつかのCommonLisp実装で実行されるHemlockを提供することを目的としたPortableHemlockプロジェクトもあります。
  • umacs[46] OS-9での実装
  • edwin、MIT / GNUスキームに含まれているEmacsのようなテキストエディタ。

Emacsエミュレーションを備えたエディター

  • Cocoaテキストシステムは同じ用語のいくつかを使用し、多くのEmacsナビゲーションバインディングを理解します。これが可能なのは、ネイティブUIがControlキーの代わりにCommandキー(Superと同等)を使用しているためです。[47]
  • Eclipse(IDE)は、一連のEmacsキーバインディングを提供します。
  • Epsilon(テキストエディタ)デフォルトはEmacsエミュレーションで、viモードをサポートします。
  • GNOME Builderには、Emacs用のエミュレーションモードがあります。
  • GNU Readline、標準のEmacsナビゲーションキーバインディングを理解するラインエディタです。また、viエミュレーションモードもあります。
  • IntelliJ IDEAは、一連のEmacsキーバインディングを提供します。
  • JEDにはEmacs用のエミュレーションモードがあります。
  • Joe's Own Editorは、 jmacsとして呼び出されたときにEmacsキーバインディングをエミュレートします
  • MATLABは、エディターにEmacsキーバインディングを提供します。[48]
  • KornShellには、GnuReadlineよりも前のEmacsライン編集モードがあります。[49]
  • Visual Studio Codeは、 Emacsキーバインディングをエミュレートするための拡張機能を提供します。

機能

Emacsは主にテキストエディタであり、テキストの一部を操作するように設計されていますが、 LaTeXGhostscript、Webブラウザなどの外部プログラムとインターフェイスすることでワードプロセッサのようにドキュメントをフォーマットおよび印刷できます。Emacsは、単語段落関数などのソースコード構造などのテキストの意味単位を操作して差別的に表示するコマンドを提供します。また、ユーザー定義の編集コマンドのバッチを実行するための キーボードマクロも備えています。

GNU Emacsは、編集が発生したときに画面に表示されるため、リアルタイムの表示エディターです。これは最近のテキストエディタの標準的な動作ですが、EMACSはこれを実装するのに最も早いものの1つでした。別の方法は、テキストを表示するために(たとえば、テキストを変更した後)、別個のコマンドを発行する必要があることです。これは、ed(unix)、ED(CP / M)、Edlin(MS-DOS)などのラインエディタで実行されます。

一般的なアーキテクチャ

ドキュメントへの文字の挿入などの基本的な編集操作を含む、Emacsのほとんどすべての機能は、 Lispプログラミング言語の方言で書かれた関数によって実現されます。GNU Emacsで使用される方言は、Emacs Lisp(ELisp)として知られています。ELispレイヤーは、Cプログラミング言語で記述された基本サービスとプラットフォーム抽象化の安定したコアの上にあります。このLisp環境では、Emacsを再コンパイルしたり再起動したりすることなく、変数関数を変更できます。ほとんどの構成は変数に格納され、変数値を変更するだけで変更されます。

メインのテキスト編集データ構造は、追加の属性を持つテキストを含むバッファと呼ばれます。最も重要なものは、ポイント(カーソルの場所)とマーク(別の場所、選択した領域をポイントと一緒に区切る)、アクセスしているファイルの名前(該当する場合)、およびバッファーに固有のELisp変数のローカル値ですこのようなローカル値は、特にアクティブモードのセット(正確に1つのメジャーモード[明確化が必要]、通常はエディターをバッファーのコンテンツタイプ(ELisp、C、HTMLなど)に適合させる)、および任意の数を指定します。マイナーモード[説明が必要]コンテンツタイプに関係なく他のエディターの動作を制御します)。エディターとの対話(キーの押下やマウスボタンのクリックなど)は、Elispコード(通常はコマンド)を実行することで実現されます。これは、インタラクティブに使用するために明示的に設計された関数です。キーは任意に再定義でき、コマンドにも名前でアクセスできます。eval-region一部のコマンドは、バッファー(egまたは)から任意のElispコードを評価しますeval-buffer

バッファは、ターミナル画面またはGUIウィンドウのタイル部分であるウィンドウに表示されます(Emacsの用語ではフレームと呼ばれます。複数のフレームが可能です)。構成に応じて、ウィンドウにはスクロールバー、行番号、通常はナビゲーションを容易にするための「ヘッダー行」、および下部のモード行(通常はバッファー名、アクティブモード、バッファーのポイント位置などが表示されます)が含まれます。すべてのフレームの下部は、メッセージ(「エコーエリア」と呼ばれる)とコマンドのテキスト入力(「ミニバッファー」と呼ばれる)に使用されます。

複数のウィンドウを同じバッファで開いて、たとえば長いテキストのさまざまな部分を表示したり、複数のバッファで同じテキストを共有したりして、たとえば混合言語ファイルのさまざまなメジャーモードを利用したりできます。メジャーモードは、必要に応じて手動で変更することもできますM-x <mode name>

カスタマイズ性

  • キーストロークをマクロに記録して再生し、複雑で反復的なタスクを自動化できます。多くの場合、これはアドホックベースで実行され、各マクロは使用後に破棄されますが、マクロは保存して後で呼び出すことができます。
  • 起動時に、Emacsは〜/ .emacsという名前のEmacsLispスクリプトを実行します(最近のバージョンでは、〜/ emacs.el〜/ .emacs.d / init.el、および〜/ .config / emacs /init.elも検索されます; [ 50] Emacsは最初に見つけたものを実行し、残りは無視します)。この個人用カスタマイズファイルは、任意の長さで複雑になる可能性がありますが、一般的なコンテンツには次のものが含まれます。
    • たとえば、グローバル変数を設定したり、関数を呼び出してEmacsの動作をカスタマイズしたりします(set-default-coding-systems 'utf-8)
    • 標準のものをオーバーライドし、ユーザーが便利だと思うがデフォルトではキーバインディングを持たないコマンドのショートカットを追加するためのキーバインディング。例:(global-set-key (kbd "C-x C-b") 'ibuffer)
    • 拡張機能のロード、有効化、初期化(Emacsには多くの拡張機能が付属していますが、デフォルトでロードされるのはごくわずかです)。
    • 特定の時間に任意のコードを実行するようにイベントフックを設定します。たとえば、バッファを保存した後にソースコードを自動的に再コンパイルします(after-save-hook
    • 任意のファイルを実行します。通常、長すぎる構成ファイルを管理しやすく均質な部分に分割します(〜/ .emacs.d /および〜/ elisp /はこれらの個人用スクリプトの従来の場所です)
  • カスタマイズ拡張機能を使用すると、ユーザーは、 .emacsで変数を設定するよりもユーザーフレンドリーな方法で、Emacs内からインタラクティブに配色などの構成プロパティを設定できます検索、説明、ヘルプテキスト、複数選択入力、元に戻すことができます。デフォルトに、リロードせずに実行中のEmacsインスタンスを変更すること、および他のプログラムの設定機能と同様の他の便利さ。カスタマイズされた値は、.emacs(または別の指定されたファイル)に自動的に保存されます。
  • フォントと色の選択に影響を与えるテーマは、elispファイルとして定義され、customize拡張機能を介して選択されます。
  • モード。フォントを変更して変更されたコードとキーバインディングを強調表示することにより、さまざまなプログラミング言語(emacs-lisp-mode、c-mode、java-mode、ESS for Rなど)の編集をサポートします(forword-functionとforward-page )。他のモードには、スプレッドシート(​​陰気な)と構造化テキストの編集をサポートするモードが含まれます。

自己文書化

最初のEmacsには、すべてのコマンド、変数、および内部関数のドキュメントを含むヘルプライブラリが含まれていました。このため、Emacsの支持者は、ソフトウェアが通常の機能と現在の状態に関する情報をユーザーに提示するという点で、ソフトウェアを自己文書化と表現しました。各関数には、要求に応じてユーザーに表示されるドキュメント文字列が含まれています。この文字列は、その後LispJavaPerlPythonなどのプログラミング言語に普及します。このヘルプシステムは、組み込みライブラリまたは追加されたサードパーティライブラリのどちらからでも、ユーザーを各関数の実際のコードに誘導できます。

Emacsにはチュートリアルも組み込まれています。Emacsは、編集するファイルがない状態で起動したときに、簡単な編集コマンドを実行し、チュートリアルを呼び出すための手順を表示します。チュートリアルはStuartCracraftとRichardStallmanによるものです。

文化

Emacs教会

RichardStallmanによって設立されたChurchof Emacs、Emacsユーザーのために作成されパロディー宗教です。[51]それはviをの編集者として言及しているが(vi-vi-viはローマ数字で6-6-6である)、viの使用に反対していない。むしろ、それをプロプライエタリソフトウェアアナテマと呼んでいます。(「無料版のviを使用することは罪ではなく、苦痛です。」[52] )Emacs教会には、独自のニュースグループalt.religion.emacsがあります[53]。 このパロディ宗教を支持すると称する投稿があります。viの支持者は、反対のviのカルトを作成しました。

ストールマンは冗談めかして自分自身をEmacs教会の聖人であるStI  GNUciusと 呼んでいます。[54]

Emacsピンキー

Emacsが修飾キーに強く依存していることに通称Emacsピンキーと呼ばれる反復運動過多損傷に起因する民間伝承がありますが[55]、Emacsが他のキーボードを多用するコンピュータープログラムよりも多くのそのような問題を引き起こすことを示す研究は行われていません。

ユーザーはさまざまなアプローチでこれに取り組んできました。一部のユーザーは、左小指に過度の負担をかけないように、タッチタイピング中にShiftキーなどの一般的なPCキーボードの2つのControlキーを使用することをお勧めします。キーボードを適切に使用すると、RSIが低下します。[56]ソフトウェア側の方法は次のとおりです。[57]

  • Ctrlキーがキーと入れ替わるようにキーレイアウトをカスタマイズします。[58]同様の手法には、キーを追加のコントロールキーとして定義することや、コントロールキーとメタキーを入れ替えることが含まれます。ただし、これらのキーは同じ指で押されているため、Emacsの小指に寄与する可能性があります。[説明が必要]Caps LockCaps Lock
  • xwritsやEmacsの組み込みのtype-break-modeなどのソフトウェアで、定期的にスケジュールされた休憩を取るようにユーザーに通知します。
  • ErgoEmacsキーバインディングを使用する(マイナーモードでergoemacs-mode)。[59]
  • キーボードレイアウト全体をカスタマイズして、統計的に頻繁なEmacsキーをより適切な場所に移動します。[60]
  • ace-jump-mode階層型ナビゲーションと同様の機能を提供する[61]やelisp拡張機能などのパッケージ。最初に文字を要求し、次に文字の出現箇所をカーソル移動用のアクセスキーに置き換えます。
  • evil-mode、高度なVimエミュレーションレイヤー。
  • god-mode、修飾キーなしでEmacsコマンドを入力するためのモードを備えたvimと同様のアプローチを提供します。
  • Spacemacsが提供するカスタマイズされたキーレイアウトを使用して、キーが制御シーケンスを開始するためのメインキーとして使用されるプロジェクト。このプロジェクトには、との両方が多く組み込まれています。[62]space barevil-modegod-mode
  • スティッキーキー。キーシーケンスをキーの組み合わせに変換します。[63]
  • 基本的なテキスト編集にはviviper-modeキーレイアウトを使用でき、より高度な機能にはEmacsスキームを使用できるEmacsのビルトイン。[64]
  • スペースバーなどのより快適にアクセスできるキーに二重の役割を与え、他のキーと組み合わせて押すとコントロールキーとして機能するようにします。人間工学に基づいたキーボード、またはスペースバーに隣接するキーの数が多いキーボード(日本語キーボードなど)を使用すると、メタキーやシフトキーなどの他の修飾キーを親指で制御できます。[65]
  • キーバインディングの限られた人間工学的サブセットを使用し、と入力して他の機能にアクセスしますM-x <command-name>Mx自体もリバウンドできます。
  • 音声入力によるEmacsの駆動。

ハードウェアソリューションには、親指簡単に操作できる修飾キーを配置するKinesisのContoured Keyboardや、大きな修飾キーがキーボードの両側に対称的に配置されて押すことができるMicrosoftNaturalキーボードなどの特殊なキーボードが含まれます。手のひら。[55]フットペダルも使用できます。

Emacsの小指は比較的最近の開発です。Emacsが開発されたスペースカデットキーボードには、スペースバーに隣接し、親指で簡単に操作できる特大のコントロールキーがありました。[66]

用語

emacsという単語は、さまざまな種類のEmacsを指す、 boxenおよびVAXen音声のアナロジーによって、 emacsenとして複数形になることがあります。[67]

も参照してください

参考文献

  1. ^ 「Emacsのリリース日」
  2. ^ a b Zawinski、Jamie(2005-06-21)[1999]。「Emacsタイムライン」2015年8月11日取得
  3. ^ a b Greenberg、Bernard S.(1979)。Multics Emacs:歴史、設計、実装
  4. ^ a bc 「 GNUEmacsFAQ
  5. ^ a b cd エイドリアン G.トンプソン。「MACSimizingTECO」2013年6月29日にオリジナルからアーカイブされました2012年2月26日取得
  6. ^ 「GNUEmacsのチュートリアル入門」エディターが「emacs」と呼ばれるための主な要件は、マクロ言語だけでなく、実際のプログラミング言語で完全に拡張可能であることです。
  7. ^ 「GNUEmacsポケットリファレンス」GNU Emacsは、Emacsファミリーのエディターの中で最も人気があり普及しているものです。
  8. ^ 「GNUEmacsマニュアル」FSF 2012年11月24日取得
  9. ^ 「EmacsWebフィードリーダーであるElfeedの紹介」
  10. ^ 「アミューズメント」最後に、イライラした場合は、有名な心理療法士のエリザに問題を説明してみてください。ただMxドクターをしてください。
  11. ^ Richard Stallmanは別の共同作成者として認められることがよくありますが、 Daniel Weinrebが書いたように、「元の(TECOベースの)Emacsは、Guy L. SteeleJr。とDavidMoonによって作成および設計されました。 AIラボの標準テキストエディタとして確立されたストールマンがそのメンテナンスを引き継ぎました。」ムーン自身は、「私が覚えている限り、すべて真実です。しかし、公平に言えば、ストールマンは、ガイと私からEmacsを「解放」した後、Emacsを大幅に改善したと言わざるを得ません。」Weinreb、Dan(2007年11月11日)、「シンボリックスとLMIの形成に関するStallmanのストーリーへの反論」Dan Weinrebのブログ:ソフトウェアとイノベーション、オリジナルからアーカイブを参照2009年1月1日
  12. ^ 「Emacsの歴史」XEmacs内部マニュアル2006-12-11 2007年8月22日取得
  13. ^ アロンバート、ビル。「Debian人気コンテスト」編集者の報告Debian 2011年11月22日取得
  14. ^ 「10の最も古くて重要なオープンソースプログラム」
  15. ^ レイモンド、エリックS。; キャメロン、デブラ; ローゼンブラット、ビル(1996)。GNU Emacs、第2版を学ぶセバストポル、カリフォルニア州:オライリー。pp。408–409。ISBN 1-56592-152-6
  16. ^ アーサー・サミュエル(1980年3月)。「エッセンシャルE」(PDF)2020年4月19日取得
  17. ^ 「EMACSvs。vi:終わりのないオタク「聖戦」" 。2014年11月26日にオリジナルからアーカイブされました。2014年5月30日に取得されました。「EMACS自体は実際には標準プロジェクトとして開始されました」とGuySteeleに電子メールを送信します。
  18. ^ ストールマン、リチャードM.(1987)。「EMACSフルスクリーンエディタ」GARBNo. Maj1987。リンショーピング大学ライセーター。pp。8–11 2007年9月14日取得
  19. ^ レイノルズ、クレイグ(1992-02-10)。ワイズマン、デビッドG.(編)。「EmacBolioNameKoan」デビッドG.ワイズマン:コンピューター民話の物語生意気な初心者はかつてストールマンにこう言った:「なぜ編集者はEmacsと呼ばれるのか推測できるが、なぜ正当化者はBolioと呼ばれるのか?」ストールマンは力強く答えました、名前はただの名前です、Emack&Bolio'sはボストンの町で人気のあるアイスクリームショップの名前です。これらの男性はどちらもソフトウェアとは何の関係もありませんでした。彼の質問は答えたが、答えられなかったので、初心者は行くようになったが、ストールマンは彼に呼びかけた。「EmacsもBolioもアイスクリームショップとは何の関係もありませんでした。」[永久リンク切れ]
  20. ^ a b ストールマン、リチャード(1981年3月26日)。EMACS:拡張可能、カスタマイズ可能、自己文書化、ディスプレイエディター(PDF)(テクニカルレポート)。MITAIラボ。AIメモ519a 2011年1月7日取得
  21. ^ リークロッツ(2007-08-29)。「「冗談を言うことに注意してください」に引用されているメール"ニューヨークタイムズ。2010年5月1日閲覧
  22. ^ 「ZWEIの作者DanWeinrebによるコメント」私はこれまでに2番目のEmacsを作成しました。Lispマシンの実装は、「StallmanのPDP-10(元の)Emacsが行うことを実行する」という仕様であり、そこから進歩しました。たくさんあります。ZWEI / Zmacsを作成するために非常に多くのコマンドを実装するのに、私とMikeMcMahonは無限の時間を要しました。
  23. ^ オーウェンセオドアアンダーソン(1979年1月)。「ディスプレイ指向の編集者書記体系の設計と実装」(PDF)2012年9月9日取得
  24. ^ クリストファーケルティ; マリオビアジオリ; ピータージャシー; マーサウッドマンゼー(2015)。知的財産の作成と非作成Computer Corporation of America(CCA) EMACS、SteveZimmerman著
  25. ^ 「Emacs」2017年12月17日。
  26. ^ 「GNUEmacsとCCAEmacsの違い。Copyyright」
  27. ^ 「Emacsの歴史」
  28. ^ "emacs-devel msg 00872(2014-09-29)"振り返ってみると、24.3は25.1と名付けられ、24.4は26.1と名付けられるべきでした。.Nは、実際にはバグ修正リリースに対してのみ保持する必要があり、24.3、24.4、または以前に計画された24.5のいずれもバグ修正リリースではありません。
  29. ^ ストール、クリフォード(1988)。「賢いハッカーをストーカーする」。ACMの通信31(5):484–497。土井10.1145 /42411.42412S2CID6956966_ 
  30. ^ 「GNUEmacs」オープンハブ2017年11月25日取得
  31. ^ レイモンド、エリック(2014-11-12)。「新しいGitリポジトリが稼働しています」2017年11月25日取得
  32. ^ ストールマン、リチャード(2008-02-22)。「Re:新しいEmacsメンテナまたはチームを探しています」gnu.orgメーリングリスト2017年11月25日取得
  33. ^ マクナマラ、ポール(2008-02-25)。「GNUEmacsの引き渡しに関するストールマン、その将来と命名法の重要性」ネットワークワールド2017年11月25日取得
  34. ^ Chirgwin、Richard(2015-11-05)。「RichardStallmanがサインオフすると、Emacsは新しいメンテナを獲得します」レジスター2017年11月25日取得
  35. ^ レイモンド、エリック(2014-03-29)。「最も醜い…リポジトリ…変換…これまで」2017年11月25日取得579人以上による29年間の継続的な開発
  36. ^ スティーブンJ.、ターンブル。「XEmacsとGNUEmacs」2012年10月2日取得
  37. ^ 「XEmacsは死んでいます。長生きするXEmacs!」
  38. ^ FrontPage- WaybackMachineで2012-02-16にアーカイブされたMeadowWiki
  39. ^ 「SXEmacsウェブサイト」Sxemacs.org。2009-10-11 2009年11月8日取得
  40. ^ 「私のLispの経験とGNUEmacsの開発」当時、1985年には、仮想メモリのない1メガバイトのマシンを持っていた人々がいました。彼らはGNUEmacsを使えるようにしたかったのです。これは、私がプログラムをできるだけ小さくしなければならなかったことを意味しました。
  41. ^ "GNU Zile(Zile is Lossy Emacs)-まとめ"最近のコンピューターには、ほんの一瞬で完全なEmacsを起動して実行するのに十分なリソースがあり、Emacsはおそらくあなたが望むものです。Zileは、小さく、高速で、強力なEmacsクローンです。これは、フットプリントの小さいインストール(フロッピーディスクなど)、メモリの少ないマシン、または特にリモートマシンや別のユーザー(rootなど)でのクイック編集セッションに役立ちます。
  42. ^ 「Zileホームページ」
  43. ^ 「Lugaruソフトウェアホームページ」
  44. ^ 「AMACSソース」
  45. ^ "apple2.org"
  46. ^ Paul S. Dayan(1992)。OS-9の達人-1:事実ギャラクティックインダストリアルリミテッド。ISBN 0-9519228-0-7
  47. ^ 「ココアテキストシステム」
  48. ^ 「コマンドウィンドウとエディタのキーバインドの設定」Mathworksブログ2007-05-11 2019年8月18日取得
  49. ^ ボルスキー、モリスI。; コーン、デビッドG.(1989)。「謝辞」。KornShellコマンドおよびプログラミング言語ニュージャージー州エングルウッドクリフ:プレンティスホール。pp。xii。ISBN 0-13-516972-0
  50. ^ 「初期化ファイル」
  51. ^ 「聖イグヌチウス-リチャードストールマン」2015年1月29日取得
  52. ^ 「ANUでのリチャードMストールマンの講演の要約されていない選択的な写し」2015年1月29日取得
  53. ^ alt.religion.emacsニュースグループ
  54. ^ 「聖イグヌチウス-リチャードストールマン」www.stallman.org 2018年3月27日取得
  55. ^ a b "EmacsPinky問題を回避する方法"Xahlee.org 2009年11月8日取得
  56. ^ 「Emacs:{Caps Lock、Control}キーを交換してはいけない理由」タッチタイピングでは、修飾子は⇧Shiftキーなどのペアで提供されます。人間工学的に認められている修飾キーの組み合わせを押す方法は、片方の手で修飾キーを押し、もう一方の手で文字キーを押すことです。両手を使用すると、片手で筋肉に負担をかけることを回避できます。
  57. ^ 「EmacsWiki:繰り返される緊張傷害」2015年1月29日取得
  58. ^ 「Ctrlキーの移動」EmacsWiki 2009年11月8日取得
  59. ^ 「ErgoEmacsホームページ」2018年9月1日取得
  60. ^ 「Keymacsレイアウト」
  61. ^ 「EmacsWiki:エースジャンプ」2015年1月29日取得
  62. ^ 「Spacemacs」2015年4月20日取得
  63. ^ BayleShanks(2009-10-07)。「スティッキー修飾子」EmacsWiki 2009年11月8日取得
  64. ^ 「バイパーモード」EmacsWiki 2009年11月8日取得
  65. ^ 「Evdevによる在宅修飾子」2015年4月14日取得
  66. ^ 「Emacsのキーボードショートカットが苦痛な理由」
  67. ^ 「VAXen」Catb.org 2009年11月8日取得

参考文献

外部リンク