Emacsの世界観です。
Emacsは、GNUプロジェクト創始者のリチャード・M・ストールマンによるテキストエディタ。
テキストエディタとは言われているものの、実際はEmacs Lispの実装を内蔵していることから、「Lispによって拡張可能なエディタ兼環境」として知られている。
エディタ兼環境と呼ばれる理由は、そのELispによるたくさんのアプリケーションがあることから言われている。たとえば、メールクライアントになったり、コマンドラインシェルになったり、時には2ちゃんねるブラウザになったりもする。
.emacsと呼ばれるファイルによって、Lispで高度な設定をすることで、Emacsの内部を途方もないほどにカスタマイズできる。そしてそこにELispを投入すれば、まさに「何でもできる」。ビル・ジョイによるUNIX標準のテキストエディタviとともに、「どちらが最強か」を議論することが多く、良く「宗教戦争」と呼ばれている。viはexエディタを前身としながら、ありえないキーバインドをしていることで、「最高のテキストエディタはどちらか」という永遠の命題がUNIXでは定番である。
Wikipedia
ソースコード
Emacsの特徴として、「Emacsはテキストエディタでありながら環境である」という標語が有名である。
Emacsは、単にテキストエディタとして使っても優秀である。それぞれのプログラミング言語を識別し(メジャーモード)、自動補完や日本語入力などの機能(マイナーモード)も使うことができる。
だが、Emacsを単なるテキストエディタとして使っている人は多くない。多くの人々が、Emacsを「環境」として使っている。
Emacsは、Emacsそれ自体がさまざまなアプリケーション、たとえばメールクライアントなどになることができるような、アプリケーションを動かすための「環境」として使用できる。
インターネットには膨大なEmacsアプリケーション(Emacs Lispアプリケーション)があり、そのすべてをEmacsに導入することができる。
また、EmacsはLisp処理系でもある。EmacsはEmacs Lispという独自のLisp方言が動作する処理系として使用できる。これが、UNIXハッカーを魅了する点である。多くのUNIXハッカーは、BASICやC/C++のような、抽象度の低い手続き型言語ではなく、Lispのような抽象度の高い関数型言語を好む。LispではBASICやC/C++では簡単にできないことが簡単にできる。なので、Lispで簡単なアプリケーションを書くために、Emacsを「環境」として使用できる。つまり、Emacsは一種のOSのようなものなのである。
Emacsは、GTKのGUIインターフェースもある(昔はMotifインターフェースだった)が、CUIのコンソールで動く黒画面のEmacsもある。CUIのEmacsはX11の入っていない環境(たとえばサーバーなど)でも使用できる。なので、「Linuxは黒画面でEmacsを使うために使う」という人も多い。
Emacsはカスタマイズ性がとても高い。.emacsというファイルにLispコードを書くことでカスタマイズできるし、EmacsアプリケーションはすべてEmacs Lispで書かれているため、Emacs Lispアプリケーションを導入することで無限にカスタマイズできる。このような「カスタマイズ性が高い」あるいは「拡張性が高い」ということは、Linuxととても親和性が高い。Mozilla FirefoxやGNOMEなどが「拡張によってカスタマイズできる環境」を作っているのは、ひとえにEmacsが「拡張可能なエディタの元祖」として存在していたからであると言える。
また、Emacsがviに比べて優れているのは、キーボードショートカットがまともだということだ。確かに、M-xとかC-xのような独自の表記法に慣れる必要はあるし、Windowsとは異なるキーボードショートカットこそ使うが、viに比べればはるかに癖がなく、現代的な普通のエディタとして使うことができる。
2024.01.05
Emacsには標準で「チュートリアル」が含まれており、'C-h t'(Ctrlキーを押しながらhキーを押し、次にCtrlキーを離してtキーを押す」で表示できる。
言語を変えるには、'help-with-tutorial-spec-language'コマンドを使う(Alt+xの後にこれを記述して実行)。日本語(ja)にも対応してある。
公式のチュートリアルを読めばきっと人並みに使えるようになるはずである。
詳しくは以下を参照のこと。
Emacsドキュメントの日本語版について、昔は「Emacs 電子書棚」という多くのEmacsやGNUユーティリティなどのドキュメントを日本語に訳されていた方がいらっしゃったのですが、どうやら無くなった模様です。
GNU Emacsの日本語の情報は以下のようなページがあります。
後日注記:Emacs電子書棚さんのサイトは再び閲覧できるようになっています。
2024.09.25編集
Emacsのキーバインド。
キー | 説明 |
---|---|
C-x | Ctrlキーを押しながらxを押す。 |
M-x | AltキーやESCキーを押しながらxを押す。 |
基本的に、
emacs ファイル名
としてファイルを読み込み、作成。
C-zで、保存して終了。C-x C-cで強制終了。C-x C-fでファイルの読み込み。C-x C-sでファイルの保存。C-x C-wで名前を付けてファイルの保存。
文字列検索は、前方がC-s(search)、後方がC-r(reverse)。置換モードは、M-%。
C-gで、入力や実行を取りやめる。
(以上は「情報基礎概論 第4版 喜久川政吉・殿塚勲 共著(学術図書出版社)」を参考に執筆しました。)
基本的に、C-xで基本的なEmacsの機能を呼び出す。また、C-cでメジャーモードの機能を呼び出す。
またM-xはコマンドを直接名前で指定して実行することができる。キーボードショートカットを覚えていない時に有用。
C-/で元に戻す(アンドゥ)。C-spc(スペース)で選択を開始する。C-x hですべてを選択。C-wで切り取り。M-wでコピー。C-kで行の切り取り。C-yで貼り付け。
C-vで一画面下へ。M-vで一画面上へ。M-<でバッファの最初に移動。M->でバッファの最後に移動。
(以上は2020年代のEmacs入門 | Emacs JPを参考に執筆しました。)
テキストエディタのEmacsはLispインタプリタを内蔵していることで有名です。Lispの実行環境になっているので、エディタなのにメールクライアントになったりします。
Lispも参照のこと。
Emacsには状況によってEmacsの動作を変える「モード」というものがあり、これをLispで設定したりLispを導入することによって、動作を変えられる。
メジャーモードは、1つのモードが多くの(唯一の)動作を決める。
C言語のソースファイルを開くと自動的にc-modeになるのがこれに当たる。
sh-modeはシェルスクリプトの編集のためのモード。
メジャーモードはキーワードの色づけやキーバインドを設定するだけでなく、M-x shellのようにEmacsをコマンドラインシェルにするようなモードもある。
後日注記:シェルモードにはいくつか種類があります。M-x shellは標準のシェルモードです。ほかにansi-termやmulti-termやeshellがあります。以下のページが参考になります。
マイナーモードは、たくさんのモードにおいて共通の小さなモードを決める。
仮名漢字変換エンジンのSKKのマイナーモードがこれに当たる(設定するとSKKで日本語入力ができるようになる)。
モードは、M-x c-modeと入力することで起動できる。このM-xは良く使うので覚えておこう。EmacsではM-xを使うことで、コマンド入力を行うことができる。
注意:c-modeとは言うが、なぜかネットを見ているとcc-modeの情報が多い。どちらが正しいのかは分からないが、M-x c-modeでもM-x cc-modeでもどちらでもいけるっぽい。
Emacsの設定はホームフォルダの中の.emacsと言うファイルを編集して行います。
まず、日本語環境の設定を最初に書いておこう。
(set-language-environment "Japanese")
ほかには、パッケージ管理の設定や、自動補完の設定をすることをおすすめする。詳しくは以下が参考になる。
ちなみに、xyzzyでは.emacsと同じように.xyzzyを編集して設定を行います。以下は僕の.xyzzyの設定より:
(setq *default-fileio-encoding* *encoding-utf8n*)
Emacsやxyzzyでは、Lispによって高度なカスタマイズが可能です。最近僕はしていませんが、昔はNavi2chを入れたり、ネットワークインストーラを入れたり、色んなことをしていました。
最近のEmacsの設定ファイルは、~/.emacs.d/init.elになります。ここにleaf(パッケージを設定するパッケージ)でパッケージの設定を行います。
詳しくは以下のページが参考になります。
設定は、~/.emacs、~/.emacs.el、~/.emacs.d/init.elのどれかひとつに記述すればいい。詳しくは以下のページが参考になる。
Emacsの設定例はネットにたくさんあります。
また、ArchWikiには詳細なカスタマイズ方法が掲載されています。Emacsを自分好みにコーディネートしたい方におすすめです。
Linux上のEmacsはフォントが綺麗でないため、設定で変更しましょう。
Emacsには最近変化があり、パッケージを簡単に導入出来るようになった。さまざまなパッケージがある。以下が参考になる。
M-x list-packagesでインストールできるパッケージの一覧を見ることができる。初期状態では、GNU Emacs Lisp Package Archive(ELPA)が登録されている。
以下のようなページを参照のこと。
このほか、基本的なパッケージについては以下のようなページが参考になります。
Emacs上で動作するメールクライアント。使いやすい。
2024.01.05編集
Emacs上で動作するWikiライクなメモ書き環境。単にプレーンテキストでメモを取る以上のことが手軽にできる。
2024.01.05編集
Emacs上で動作する2ちゃんねる専用ブラウザのひとつ。残念ながら5ちゃんねるの仕様変更により使うことが難しくなった。
2ちゃんねる専用ブラウザも参照のこと。
2024.01.05編集
emacs-mozcはEmacs上でMozcを使用するためのパッケージ。Linux環境で日本語入力にMozcを使っている人はぜひ導入を。
WindowsでEmacsライクなエディタを使うためには、僕はxyzzyを使っているが、過去にはMeadowと呼ばれる日本語の対応バージョンがあった。
以下はMeadow/Emacsを使う上で非常に参考になるページ。
xyzzyも参照のこと。
2024.09.25編集
XEmacsはかつて存在したEmacsの派生版。
WindowsにEmacsを導入するには、以下のようなページが参考になります。
IMEパッチは、Windows上のEmacsでIME(日本語入力)の挙動を改善するためのパッチ。
どうやら最近のEmacs(GNU Emacs 27.1)では、公式のバイナリでもIMEの挙動が改善されているそうです。
GNUも参照のこと。
Lispで拡張できるエディタ。
テキストエディタというよりも環境であり、Emacs向けのLispアプリケーションを動かすことのできる一種のOSである。
C/C++などはメジャーモードと言い、メジャーモードとさまざまなマイナーモードを組み合わせて使う。
C-xはCtrl-x、M-xはAlt-x(あるいはESC-x)を表す。M-xでコマンド入力モードになり、Tabでコマンド候補の一覧も表示されるので、使い方や機能が分からなかったらM-xとTab補完を積極的に使うといいかも。
使い方は公式のチュートリアルを見よう。
UNIXのLispで拡張可能なテキストエディタ。
基本的な使い方:
以下のサイトでは、とてもたくさんのEmacs関連情報があり、Emacsユーザーは必見です。