GNU Emacs

GNU Emacsとは



GNU Emacsは、リチャード・ストールマンが開発したテキストエディタで、高度な拡張性とカスタマイズ性を誇ります。Emacs Lispというプログラミング[[言語]]を用いて機能を拡張できる点が最大の特徴で、単なるテキストエディタを超えた、強力な開発環境としても利用されています。その柔軟性から「今日利用できる最もパワフルなテキストエディタ」と評されることもあります。

歴史



1976年にストールマンが最初のEmacsを開発し、1984年にGNU Emacsの開発が始まりました。当初は別のEmacsエディタをベースとしていましたが、ストールマンがLISPインタプリタを実装したことで大幅な書き換えが行われました。GNU EmacsGNUプロジェクト初期の主要なプログラムであり、自由ソフトウェア運動の象徴としても重要な役割を担ってきました。

1985年に最初の公式リリースがあり、その後も機能拡張と改良が続けられています。開発初期にはCVSで管理されていましたが、現在はgitが利用されています。ストールマンは長らくメンテナを務めていましたが、現在は複数の開発者がメンテナンスを引き継いでいます。

ライセンス



GNU EmacsソースコードGNU General Public License (GPL) の下で公開されており、誰でも自由に利用、修正、再配布できます。古いバージョンのドキュメントは独自のライセンスで配布されていましたが、現在はGNU Free Documentation Licenseが適用されています。コピーレフトを徹底するため、コード寄贈には著作権の放棄または委譲が求められますが、例外もあります。

基本的な使い方



Emacsはキーボード操作を主体としており、コントロールキーやメタキーなどと組み合わせて様々なコマンドを実行します。カーソル移動やテキスト編集の基本的な操作から、ファイル操作、プログラミング支援まで、幅広い機能が利用できます。

Emacsは、Viのようなモードを持たず、常に編集モードです。しかし、viの操作をエミュレートするモードも存在します。チュートリアルも用意されており、初心者でも容易に操作を学ぶことができます。

コマンド



Emacsのコマンドは、Emacs Lisp関数を呼び出すことで実行されます。多くのコマンドは、キーボードショートカットに割り当てられており、効率的な操作が可能です。外部プログラムを呼び出して結果をEmacsに表示する機能も備えています。下位プロセスとの連携も可能で、シェルプログラミング[[言語]]のREPLをEmacs内で実行できます。

ミニバッファ



Emacsは、画面最下部に「ミニバッファ」という領域を持っており、コマンドやメッセージの入出力に使われます。ファイル名や検索文字列などの入力を促したり、実行結果を表示したりします。ミニバッファでは、タブ補完も利用できます。

ファイル管理と表示



Emacsは「バッファ」と呼ばれるデータ構造でテキストを管理します。バッファは複数同時に開くことができ、それぞれ独立して編集できます。ファイルから読み込んだテキストだけでなく、コマンドの出力やヘルプドキュメントなどもバッファで表示されます。Diredと呼ばれるファイルマネージャもバッファで表示され、ファイル操作も可能です。Emacsはウィンドウを分割して複数のバッファを同時に表示することができ、柔軟な作業環境を構築できます。

主モードと副モード



Emacsには、「主モード」と「副モード」という概念があります。主モードは、編集するテキストの種類に応じて振る舞いを変更するもので、プログラミング[[言語]]やマークアップ[[言語]]など、様々なファイルタイプに対応した主モードが用意されています。副モードは、主モードの機能をさらにカスタマイズするもので、複数同時に有効にできます。例えば、C[[言語]]のソースコードを編集する場合、Cモードという主モードに加えて、特定の字下げスタイルにする副モードなどを適用することができます。

バッチモード



Emacsは、テキストエディタとしてだけでなく、Emacs Lispのインタープリタとしても利用できます。バッチモードでは、GUIを表示せずにEmacs Lispのスクリプトを実行できます。コマンドラインからEmacs Lispのコードを実行したり、スクリプトファイルを作成したりできます。

マニュアル



Emacsには、詳細なマニュアルが付属しています。マニュアルEmacs内で閲覧でき、操作方法や機能について学ぶことができます。Emacs Lispプログラミングに関するマニュアルも用意されています。

国際化



Emacsは、多種多様な文字コードをサポートしており、様々な言語のテキストを扱うことができます。UTF-8にも対応しており、多[[言語]]のテキストを混在して編集することも可能です。ただし、ユーザーインターフェースは基本的に英語であり、一部の機能が多[[言語]]に対応していない場合があります。

日本語化



Emacsには、日本語対応版としてNemacsやMuleが存在します。Muleは多[[言語]]対応版であり、複数の文字集合を混在して編集できます。日本語版Emacsは、MS-DOS環境にも移植されていました。

拡張性



Emacsは、Emacs Lispを用いてほぼ無限に拡張可能です。新しいコマンドやバッファモード、キーマップを定義したり、ユーザーインターフェースをカスタマイズしたりできます。多くの拡張機能がコミュニティによって開発されており、パッケージマネージャを利用してインストールできます。

主な拡張機能の例


AUCTeX: TeX/La[[TeX]]文書編集
Calc: RPN計算機
Calendar-mode: カレンダー機能
Dired: ファイルマネージャ
Emacs Speaks Statistics (ESS): 統計言語編集モード
ERC/rcirc/Circe: IRCクライアント
Eshell: Emacs Lispシェル
Magit: Git連携機能
Org-mode: Todo管理、ドキュメント作成
SKK: 日本語入力システム
SLIME: Common Lisp開発環境
W3M: テキストブラウザ

パフォーマンス



Emacsは、Emacs Lispのインタープリタで動作するため、初期の実装では動作が遅いという欠点がありました。しかし、現在のコンピュータは十分に高速であり、Emacsの動作速度は実用的なレベルに達しています。C[[言語]]で記述されたコードを利用したり、JITコンパイラを利用したりすることで、パフォーマンスの向上が図られています。

プラットフォーム



Emacsは、様々なオペレーティングシステムに対応しています。LinuxやmacOSなどのUnix系OSだけでなく、WindowsやDOSでも動作します。テキスト端末とGUI環境の両方で動作し、グラフィカルな表示も可能です。

GUIへの対応



Emacsは元々テキスト端末での利用を想定していましたが、X Window Systemに対応したことでGUI環境でも利用できるようになりました。現在では、複数のフォントや画像を表示したり、メニューバーやツールバーなどのGUI要素を利用したりできます。macOSやWindowsでは、各プラットフォームのネイティブなグラフィックスシステムを利用できます。

Windows



Windows版のEmacsは、Visual C++Cygwinでコンパイルできます。バイナリ形式で配布されており、zipを展開するだけで利用できます。日本語入力には問題があるため、パッチを当てたCygwin版を利用するのが一般的です。

macOS



macOS版のEmacsは、初めからインストールされています。GNU Emacs 23以降は、Cocoa APIを利用したGUIで動作します。Carbon APIを使ったCarbon EmacsやAquaをGUIとしたAquamacsなどのバリエーションも存在します。

フォーク



Emacsには、いくつかのフォークが存在します。有名なものとしては、XEmacsがあります。XEmacsはGNU Emacsから派生したエディタで、独自に開発が進められてきました。MeadowやSXEmacs、Aquamacsなどの派生も存在します。

リリース履歴



Emacsのリリース情報は、NEWSファイルに記載されています。以前のバージョンにダウングレードする際は、Antinewsファイルを参照できます。



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。