Emacs Beginner's HOWTO Jeremy D. Zawodny v1.7, 14 October 1999 池田 克巳 v1.7j, 2 February 2000 この文書は Linux ユーザに Emacs エディタを紹介するものです。この文書で は vi や似たようなエディタについて、少しは知っていると仮定しています。 この文書の最新版は http://www.wcnet.org/jzawodn/emacs/ から入手可能で す。 ______________________________________________________________________ 目次 1. イントロダクション 1.1 著作権 1.2 対象とする読者について 1.3 Emacs とは何か? 1.3.1 ポートとバージョン 1.3.2 Emacs を入手する 2. Emacs の実行 2.1 Emacs の開始 & 終了 2.1.1 見た目 2.1.1.1 メニューバー 2.1.1.2 ステータスバーとミニバッファ 2.2 用語 2.2.1 バッファ & ファイル 2.2.2 ポイント & リージョン 2.2.3 ウィンドウ 2.2.4 フレーム 2.3 キーボードの基本 2.3.1 コマンドキー (Meta, Esc, Control, Alt) 2.3.2 バッファの中の移動 2.3.3 基本的ななコマンド 2.3.4 タブ補完 2.4 チュートリアル、ヘルプ & Info 3. Emacs のモード 3.1 メジャーモード vs. マイナーモード 3.2 プログラミングモード 3.2.1 C/C++/Java 3.2.2 Perl 3.2.3 Python 3.2.4 その他 3.3 オーサリング 3.3.1 スペルチェック (ispell モード) 3.3.2 HTML (html-helper モード) 3.3.3 TeX (tex-mode) 3.3.4 SGML (sgml-mode) 3.4 他のモード 3.4.1 バージョン管理 (vc モード) 3.4.2 シェルモード 3.4.3 Telnet and FTP 3.4.4 Man 3.4.5 Ange-FTP 4. Emacs のカスタマイズ 4.1 一時的なカスタマイズ 4.1.1 変数代入 4.1.2 ファイル関連 4.2 .emacs ファイルの使用 4.3 パッケージのカスタマイズ 4.4 X のウィンドウ表示 5. 人気のあるパッケージ 5.1 VM (メール) 5.2 Gnus (メールとニュース) 5.3 BBDB (A rollodex) 5.4 AucTeX (もう 1 つの TeX モード) 6. 他の情報源 6.1 書籍 6.1.1 Learning GNU Emacs 6.1.2 Writing GNU Emacs Extensions 6.1.3 Programming in Emacs Lisp: An Introduction 6.1.4 The GNU Emacs Lisp Reference Manual 6.2 Web サイト 6.2.1 EMACSulation 6.3 ニュースグループ 6.4 メーリングリスト 6.5 Emacs Lisp アーカイブ 7. クレジット ______________________________________________________________________ 1. イントロダクション 1.1. 著作権 Copyright (C) 1998 - 1999 Jeremy D. Zawodny. Permission to distribute and modify this document is granted under the GNU General Public License. An on-line copy is available at http://www.gnu.org/copyleft/gpl.html 1.2. 対象とする読者について この文書は、Emacs についてちょっと学んだり試したりしたいと思っている Linux ユーザを対象にしています。この文書の始まりは、実際に私が Toledo Area Linux User Group - http://www.talug.org/ - の集会で行った簡単な チュートリアルの概要としてでした。それ以来、この文書は私がコミュニティ から受け取った有益なフィードバックによって少しずつ発展してきました。詳 細はクレジットの節を参照してください。 そういうわけで、事実上この文書中には Linux 特有の部分はありません。こ の文書は事実上、すべての Unix 系の Emacs と、Microsoft Windows で動作 する Emacs にさえも当てはまります。しかし、この文書は Linux Documentation Project の一部なので、私はこの文書が Linux ユーザのため に開発されたということを主張します。なぜなら、この文章は元々そうであっ たからです。 そして最後に、簡潔な ``Linux'' よりも GNU/Linux という名称を好む人は、 このドキュメントに現れるすべての Linux の代わりに GNU/Linux を心の中で 自由に用いてください (その人たちの思いは http://www.gnu.org/gnu/linux- and-gnu.html で見ることができます)。私はその考えの背後にある論拠と精神 に同意しないことはないですが、 GNU/Linux と書くことを強いるようにしよ うとは思いません。 1.3. Emacs とは何か? Emacs は人それぞれによって違ったものとして捉えられます。誰に尋ねたかに よって、次の返答のどれでも受け取る可能性があるでしょう。 o テキストエディタ o メールクライアント o ニュースリーダ o ワードプロセッサ o 宗教 o 統合開発環境 o あなたが望むものならどんなものにでも変化します! しかし、ここでは私たちの目的に合わせて、Emacs はテキストエディタである ということにしましょう。すばらしく融通のきくテキストエディタです。 Emacs が何であるかについては、後で検討しましょう。 Emacs は Richard Stallman (Free Software Foundation - http://www.fsf.org/ と GNU project http://www.gnu.org/ の創設者) によって書かれたもので、彼は現在 でも Emacs をメンテナンスしています。 Emacs は Linux (と Unix) で使われている、非常に人気があり強力なテキス トエディタの 1 つです。 Emacs は人気において vi にもひけをとりません。 Emacs は莫大な機能、カスタマイズの容易性、そしてバグの少なさで知られて います。 Emacs の多くの特徴とカスタマイズの容易性は、実際にどのように Emacs が設計され実装されたかの結果といえます。あまり詳細には立ち入らな いで、Emacs が ``単なるエディタ'' ではないということを簡潔に指摘したい 思います。 Emacs は、大部分を Lispというプログラミング言語で書かれたエ ディタです。 Emacs の中心部分は、C で書かれたすべての機能を持った Lisp インタプリタになっています。 Emacs の最も基本的で低レベルな部分のみが C で書かれています。エディタのほとんどは実際に Lisp で書かれています。 従って、ある意味で Emacs は、カスタマイズ、拡張、そして動作を変更する ために使用できる ``組み込みの'' プログラム言語を完備しているといえま す。 Emacs はまた、出回っている中でも最も古いエディタの 1 つです。 20(?)年 以上昔から多数のプログラマによって使われてきたという事実は、多くのアド オン (add-on) パッケージが利用可能であることを意味しています。 Stallman が最初に Emacs に取り掛かり始めた時には決して夢にも思わなかっ ただろうことが、こういったアドオンパッケージによってできるようになって います。これについては後の節で説明します。 Emacs についてのより良い概要、歴史、その他関連した事項についての多くの web サイトや文書が存在します。ここでそれらの多くを説明するよりは、この 文書の ``他の情報源'' の節にある一覧のいくつかを調べてみることを勧めま す。 1.3.1. ポートとバージョン 二種類の Emacs エディタがあるということは指摘しておくに値します - GNU Emacs と XEmacs です。どちらも同じ伝統を受け継ぎ、ほとんど同じ機能を共 有しています。この文書は GNU Emacs (特にバージョン 20.3) に焦点を当て ていますが、ここで読むであろう大部分のことは、XEmacs や以前のバージョ ンの GNU Emacs でも良い具合いに利用できるでしょう。この文書全体にわ たって、私は簡潔に ``Emacs'' を用います。私が ``Emacs'' を用いる時には いつも、そのことを心に留めておいてください。 1.3.2. Emacs を入手する Emacs を手に入れるのは簡単です。もし Debian, RedHat, Slackware あるい はその他の一般的な Linux ディストリビューションを使っているのであれ ば、 Emacs はおそらく、ディストリビューションのメディアからインストー ルできるオプションパッケージとなっているはずです。もしそうでなけれ ば、Emacs のソースコードを持ってきて自分でコンパイルすることもできま す。正しい指定で GNU web サイトを訪れてください - http://www.gnu.org/software/emacs/emacs.html 。 2. Emacs の実行 2.1. Emacs の開始 & 終了 新参のユーザであれば、いろいろいじったり ちょっと試してみたい、という 理由だけでも Emacs を起動してみたいでしょう。でも、ひとたび Emacs を起 動してしまったら、終了させたいだけなのに、どうしたらよいのか分からなく なるでしょう。だから、まだ Emacs を使ったことがなければ、いまここで やってみてください。シェルプロンプトで、emacs とタイプして enter を 打ってください。 Emacs が起動するでしょう。起動しない場合は、インスト ールされていないか、パスに含まれていないかのいずれかです。 いったん Emacs を起動したら、今度は終了方法を知る必要があります。 Emacs を終了するためのキー入力は C-x C-c です。 C-x という表記 は、Ctrl キーを押したまま x を押すことを意味しています。この場合は、さ らに Ctrl を押したまま c を押すことで Emacs を終了できます。 Emacs で使われるキー入力は、初めのうちは、わけがわからなくて、異質なも ので、苦痛ですらあるかもしれません -- 特に vi ユーザであれば。 vi と異 なり、Emacs はテキスト編集とコマンド発行のための分離したモードというも のは持っていません。 要約すると - emacs で Emacs が起動します。 C-x C-c で Emacs が終了しま す。 2.1.1. 見た目 Emacs が起動したとき、Emacs は X のウィンドウ (もしも X Window System ではなくてコンソールで実行しているならば、スクリーン) 全体を使い尽くす でしょう。最上部に横に並んだメニュー、スクリーンのメイン部分にいくつか のテキスト、最下部に 2 つの行があるのが見れるでしょう。 この ASCII による略図のようになります: +----------------------------------------------------------------------+ |Buffers Files Tools Edit Search Mule Help | | | |Welcome to GNU Emacs, one component of a Linux-based GNU system. | | | | | | | | ... | | | |---1:---F1 *scratch* (Lisp Interaction)--L1--All-------------| |For information about the GNU Project and its goals, type C-h C-p. | +----------------------------------------------------------------------+ 注釈: Emacs は普通、スクリーン/ウィンドウ全体を占めます。私は上の例で は、ここの場所を節約するために小さく描写しています。 Emacs を起動する とまず、Emacs のウェルカムメッセージも表示されます。私はそれも省略し て、``...'' をその代わりに書いています。ウェルカムメッセージは、簡単に オンラインヘルプと関連項目を示すだけでなく、使用している Emacs の 正確 なバージョンも示します。 2.1.1.1. メニューバー Emacs の一番上のラインのインタフェースはメニューです。もしも X を実行 していれば、マウスでアクセスできる昔ながらのプルダウンメニューであるこ とがわかるでしょう。さもなくば、メニューにアクセスするためにキーボード ショートカット (ここでは取り扱いません) を使う必要があります。 2.1.1.2. ステータスバーとミニバッファ Emacs インタフェースの最下行の 2 行のうち、上の行は本質的にはステータ スバーです。そこは、作業しているバッファが Emacs のどのモードになって いるかについての情報や、他の多くの情報を含んでいます。ひとまず、これは そういうものだと思っていてください。 最下行は ミニバッファ と呼ばれます。そこは、ちょうど先ほど説明したステ ータスバーによってメインバッファと分けられています。ミニバッファは Emacs の ``コマンドライン'' であると考えることができます。そこ は、Emacs に与えたコマンドが表示されたり、実行に対する反応として状態 メッセージが出力されたりする場所です。 私がステータスバーと呼んでいるものが、Emacs の関連文書では、普通、モー ドラインと呼ばれていることに気付くでしょう。そこは、現在の日付と時刻、 行数、ファイルサイズ、そしてほとんど何でもそこで見たいと思っているもの と同じように、現在のモードについて Emacs が表示している場所です。 2.2. 用語 この節では、Emacs について読んだり使ったりする時に遭遇するであろう、最 も基本的な Emacs の用語を取り扱います。 2.2.1. バッファ & ファイル いくつかのエディタとは異なり、Emacs でファイルを開いた時には、そのファ イル自体は入力作業中では ``open'' 状態になっていません。その代わり に、Emacs はメモリ中の バッファ にファイルを読み込みます。バッファを編 集してデータ作業を行っている間、ディスク上では何も変化しません。実際に バッファを保存する時だけ、ディスク上のファイルが更新されます。この方法 には利点も欠点もありますが、大切なことは、このように動いていることを理 解することだけです。 Emacs の文書、モード、パッケージ、その他で使われている ``バッファ''と いう用語を目にすることになるでしょう。バッファは ``現在メモリ中にある ファイルのコピー'' を意味することをはっきりと認識しましょう。そう、 バッファは必ずしもディスク上の特定のファイルを指していなくてもよいんで す。しばしば Emacs は、実行したコマンドの結果としてバッファを作りま す。そのようなバッファには、コマンドの結果、選択用のリストなどがありま す。 2.2.2. ポイント & リージョン Emacs 特有の言葉として、ポイント という言葉をしばしば見聞きするでしょ う。一般的な用語では、ポイントはカーソルです。初めて Emacs に取り掛か る時は、ポイントとカーソルの間の実際の区別はおそらく重要ではないです。 しかし、好奇心を押さえられないのであれば、それについてはこのように考え てください。カーソルはポイントの視覚表現です。カーソルはいつも現在の バッファの特定の文字の位置の``上''にあります。一方、ポイントは、バッ ファ中の 文字の間の場所に存在します。つまり、もしも単語 ``the'' の文字 `h' 上にカーソルがある場合、ポイントは `t' と `h' の間にあるということ ができます。 多くの近頃のエディタと同様、Emacs は現在のバッファのある部分に命令 (イ ンデント、スペルチェック、カット、コピー、ペースト、…) を実行すること を許しています。キーボードやマウスを使ってテキストのブロックをハイライ ト (あるいは ``マーク'') することができ、テキストの選択されたブロック に対して命令を実行することができます。 Emacs では、テキストのそのよう なブロックのことを リージョンと呼びます。 2.2.3. ウィンドウ さて、これは以前 GUI を使用したことのある人を少し混乱させるでしょう。 Emacs は GUI とウィンドウマネージャが一般的になるよりもずっと以前から 開発されていたことを思い出してください。 Emacs での ウィンドウ は、バッファが表示されているスクリーンの領域のこ とです。最初に Emacs を起動したとき、スクリーンには 1 つのウィンドウが あります。いくつかの Emacs の機能 (ヘルプやドキュメント) は、しばしば [ 一時的に ] Emacs のスクリーンに追加のウィンドウを開きます。 Emacs のウィンドウは GUI の感覚での X のウィンドウとは何の関係もありま せん。 Emacs のバッファを表示するために追加の X のウィンドウを開くこと ができ、2 つのファイルを横に並べて比較することもできます。それらの新し い X のウィンドウは、Emacs 特有の言葉で フレームと呼びます。次を読んで ください。 2.2.4. フレーム Emacs では、フレーム は Emacs のバッファが表示されている、別々の X の ウィンドウです。しかし、その両方とも同じ Emacs のセッションの一部で す。その振る舞いは、Netscape Navigator で Alt+N を押した時に起こること と、すこし (ほとんどではない) 似ています。 2.3. キーボードの基本 この節では Emacs のキーボード操作の基本を取り扱います。すべての強力な エディタと同様、Emacs でできることのすべては、少ないキー入力に割り当て られています。 もしも vi ユーザであれば、上の行、下の行、文字の前方向、文字の後方向へ の移動に k, j, l, h キーを使う考えに慣れているかもしれません。事実、vi で使用可能な多くのキーの組合せを使ってファイルを快適に操作できるように なるまでに、練習に数時間か数週間かけたかもしれません。 Emacs も同じです。学習するキー入力とコマンドは違います。ちょうど vi の ように、多くの仕事をこなすには基本を習得する必要があるだけです。時が経 つにしたがって、ゆっくりと知識を広げて、物事を進めるより速い方法を見つ けることができるようになるでしょう。 2.3.1. コマンドキー (Meta, Esc, Control, Alt) 学習を始めて間もなくすると、Emacs は複数キーの組合せを大量に使わせるよ うになります。 Emacs は vi のようなモードを持ったエディタではないの で、カーソルを動かしたりコマンドを実行したりする前に、 ``コマンドモー ド'' または ``編集モード'' のどちらにあるのか考える必要はありません。 その代わり、正しいキーの組合せを押すことで、(普通は) Emacs が命令を実 行します。 Emacs で最も良く使うキーは、普通 C (Control または Ctrl) や M (Meta) として文書中で略して書かれます。最近の PC のほとんどは Ctrl と表示され た 1 つ以上のキーを持っているのですが、Meta と表示されたキーを持つもの はほとんどありません。心の中で、Meta キーを Esc または Alt のどちらか に入れ換えたいでしょう。多くの標準構成では、Esc と Alt の両方とも、本 質的に同じことをします。 Emacs に関連する文書で C-x f という記述を見つけた場合、それは ``Ctrl-x を押してから f を押す'' ことを意味します。もし M-x shell のような記述 を見つけた場合、それは ``alt-x を押してから単語 shell を入力する'' こ とを意味します。 初心者にとても役に立つコマンドは、M-x apropos または C-h a です。 apropos は、すべての関数に対してEmacs のオンライン文書を調べ、入力した 正規表現に対して検索します。フレーム (frame) に関連したすべてのコマン ドを発見する最良の方法は、単に、C-h a としてから frame とします。 2.3.2. バッファの中の移動 さあ、これでもうキー操作の変てこな省略表記のことは分かったでしょうか ら、バッファ内の移動に関する一般的なキー入力の一覧をここに示します: キー入力 動作 ----------------------------------- C-p 1 行上に移動 C-n 1 行下に移動 C-f 1 文字前に移動 C-b 1 文字後に移動 C-a 行の先頭に移動 C-e 行の末尾に移動 C-v 1 画面下に移動 M-v 1 画面上に移動 M-f 1 単語前に移動 M-b 1 単語後に移動 M-< バッファの先頭に移動 M-> バッファの末尾に移動 C-g 現在の操作を終了 ----------------------------------- 予想の通り、カーソルキー (あるいは矢印キー) は普通はご期待の通りに働き ます。 Backspace はそうでないかもしれません。それには、また別の話があ るのです。 :-( 2.3.3. 基本的ななコマンド さて、これでバッファ内での移動方法はわかりました。ファイルを開いたり保 存したりする方法はどうするのでしょう? 検索はどうすればいいのでしょう? これらは基本的なコマンドです。 それらのコマンドの説明にすぐにゆく前に、これらがどのように機能している かについて簡単に触れておく必要があるでしょう。 Emacs のすべての ``コマンドキー入力'' (M-x 何かあるいは C-何か) は実 際、Emacs の一部である関数へのショートカットになっています。それらの関 数は、M-x 関数名 を入力して Enter を押すと、関数の機能を呼べます。キー ボードショートカット (もしあれば) でも、その関数を利用できます。 例えば、ディスクにバッファを保存する関数は save-buffer と呼ばれます。 デフォルトでは、それは C-x C-s にも割り当てられています。つまり、現在 のバッファを保存するためには、ショートカット (C-x C-s) か M-x save- buffer のどちらかを使えばよく、どちらでも全く同じ結果が得られます。 一般的な関数のすべては、デフォルトでキーボードショートカットを持ってい ます。それらのいくつかを次に列記します。 キー入力 関数 説明 ------------------------------------------------------------------- C-x C-s save-buffer 現在のバッファをディスクに保存する。 C-x u undo 最後の操作を取り消す。 C-c C-f find-file ディスクからファイルを開く。 C-s isearch-forward 文字列を前方検索する。 C-r isearch-backward 文字列を後方検索する。 replace-string 文字列の検索と置換を行う。 replace-regexp 正規表現を使って、検索と置換を行う。 C-h t help-with-tutorial インタラクティブなチュートリアルを使う。 C-h f describe-function 関数のヘルプを表示する。 C-h v describe-variable 変数のヘルプを表示する。 C-h x describe-key キー入力が何をするものであるか表示する。 C-h a apropos 文字列/正規表現のヘルプを検索する。 C-h F view-emacs-FAQ Emacs の FAQ を表示する。 C-h i info Emacs の文書を読む。 C-x r m bookmark-set ブックマークを設定する。検索に役立つ。 C-x r b bookmark-jump ブックマークに移動する。 ------------------------------------------------------------------- たくさんの関数を試していくうちに、多くのものが、さらなる入力を促すこと に気付くでしょう。それら入力はいつもミニバッファ内で行われます。これは vi で : コマンドを、あるいはお気に入りの Unix シェル内のコマンドの大部 分を使ったときと似ています。 Emacs は文字通り、利用可能な何百もの組み込み関数を持っています。上の一 覧は、私がいつものように使っているものを代表する、ごく小さなサンプルで す。私が上で簡単に述べたものについての、より完全な利用可能な関数の一覧 と完璧な文書については、オンラインヘルプを見てください。 2.3.4. タブ補完 多くの一般的な Unix シェル (bash, csh, tcsh, ...) と同様に、 Emacs は Tab キーによるコマンド補完を提供しています。実際、bash のコマンド補完 は Emacs をまねして作られました。 bash のこの機能を使っているならば、 すでに手に馴染んでいることでしょう。 たとえば、M-x search としてから Tab を押してみてください。Emacs はハイ フンを追加するはずです。この挙動は、複数の補完候補があり、全ての場合に おいてハイフンが続くことを示しています。 Tab をもう一度押すと、補完候 補の一覧が表示されます。新しいウィンドウ に表示されるという点に注目し てください。その結果、一時的に、表示部が 2 つのウィンドウに分かれま す。1つは編集中のバッファを含むウィンドウで、もう一つのウィンドウには ``search-'' の補完候補一覧が表示されていると思います。補完処理を終了し て新しいウィンドウを閉じたいのであれば、C-g を押しても構いません。 2.4. チュートリアル、ヘルプ & Info Emacs は、すべての人が知るべき機能と関数の基本的な編集作業を一通り学ぶ ための、オンラインチュートリアルを含んでいます。それはまた、Emacs で他 のヘルプ機能を使う方法も説明しています。 もしも Emacs の習得に真面目に取り組むつもりであれば、チュートリアルを 一通りやってみることを強く勧めます。上の表で示した通り、C-h t でチュー トリアルに入れます。チュートリアルはそれ自身がやり方の説明になってお り、まさに Emacs を始めようとする人がねらいです。 訳注: 日本語チュートリアルを実行するには、 C-u M-x help-with-tutorial ( または C-u C-h t ) の後、 Japanese を入力します。 もしも X で Emacs を実行しているならば、Help と表示されたメニューがメ ニューバーの一番右にあることに気づくでしょう。 Help メニューを調べれ ば、キーボードショットカットが付いている項目があること、それがメニュー の右側に一覧表示されていることがわかるでしょう。 最後に、Emacs で利用できる文書の量を見るために、Info (Emacs の文書ブラ ウザ) を起動する M-x info または C-h i を試してみるべきでしょう。 3. Emacs のモード Emacs のモードは、様々な状況での使用においてオンまたはオフに (もちろ ん、カスタマイズも) できる、また別の振る舞いと機能です。文書を書く、い ろいろな言語 (C, C++, Perl, Python, Java その他多数) でプログラミング をする、ホームページを作成、E-mail を送る、 Usenet ニュースを読む、予 定表、そしてゲームで遊ぶ.. モードこそが、ある一つのエディタ (Emacs) を、これらすべてが等しく便利にこなせるようにしているものです。 Emacs のモードは、単にいろんな方法で Emacs を拡張、変更、強化する Lisp コードのライブラリです。 3.1. メジャーモード vs. マイナーモード 基本的に 2 種類のモード - メジャー・モードとマイナー・モードがありま す。これらの区別を理解することは、オフとオンを何度か実際に試してみるま で簡単ではありませんが、やってみましょう。 ある時点で有効なメジャーモードは 1 つのみです。逆に、多くのマイナーモ ードは、同時に動かせます。メジャーモードは言語または特定の処理に対応す る傾向があり、マイナーモードは多くの処理に共通する、より小さく一般的な 処理に対応します。 大体の概要を確かめるために、例を試しましょう。昔ながらの普通のテキスト ファイルを書いている時、私が大変良く使うモードがあります。 text-mode というものです。このモードは、README ファイルのような非定型テキストを 書くために設計されています。このモードは、どのように単語と段落を識別す るかについて理解していて、通常、私が普通のキー入力操作を使った時は、私 が期待した通りのことをしてくれます。 私が誰かのためにテキストを書くときは、一般に見映えするものが書きたいで す。適切にワードラップしてほしい、など。ワードラップを有効にするため に、私は auto-fill マイナーモードを立ち上げます。どんどんタイプして いって、行の終りに到達すると、このモードは「やるべきこと」(訳注: 単語 境界での行折り返し - ワードラップ) をやってみてくれます。これはマイナ ーモードなので、ほかのいろんなメジャーモードで動作します。行末に到達し たときに私が ``やってほしいこと'' は、例えば text-mode の時と java- mode の時とでは違います。私は自分の Java コードを英語テキストのように ワードラップしたくはありません。しかし、自分の Java コード中のコメント ブロックはワードラップして欲しいです! auto-fill モードはそのへんを理 解してくれるよう賢くできています。 様々な Emacs モードの作者たちは、マイナーモードとして動作すべきものが 確かにマイナーモードであることを確かめるために、たくさんの作業をしてき ました。 Emacs のスクリーンの ASCII による略図まで戻って注意して見れば、モード 行が Emacs のモードを識別することに気づくでしょう。この場合は、デフォ ルトモードである ``Lisp Interaction'' と呼ばれるモードになっています。 それは、 Lisp コードを書こうとしている場合にのみ本当に役立ちます (Emacs のほとんどが Lisp で書かれているのだから、構わないですね)。 3.2. プログラミングモード まず何よりも先に、 Emacs はプログラマによってプログラマのために設計さ れました。思いつくほとんどすべての一般的なプログラミング言語 (そしてい くつかのそれほど一般的でない言語) のために、高品質なモードが利用可能で す。私はそれらの一部をここで簡潔に説明するにとどめます。 大部分のプログラミングモードは、かなりの一般的な特徴を共有します。普 通、それらは次のうちのいくつか、または全部です - o そのプログラミング言語にふさわしい、色による構文強調表示を用意す る。 o プログラミング言語特有の、自動のインデントとコードフォーマットを用 意する。 o 文脈 (プログラミング言語) 依存のヘルプを用意する。 o 自動的にデバッガとのインタフェースを行う。 o 特定のプログラミング言語に対応したメニューをメニューバーに追加す る。 さらに、あるプログラミング言語に特化しない、多くのプログラミング言語に 共通する作業を援助するモードがあります。バージョンコントロールソフト ウェアとのインタフェースのように、自動的にコードにコメントを追加するこ と、Makefile を作成すること、変更履歴 (ChangeLog) を更新することなどで す。 これらのすべてのモードの存在をもひとまとめにして Emacs コードの完成と 安定性を考えてみれば、販売されている商用の C++ や Java のような言語の ための統合開発環境 (IDE) といい勝負になることがわかるでしょう。で、も ちろん、Emacs はフリーでもあります。 3.2.1. C/C++/Java C と C++ と Java の構文はとても似ているので、 (Objective-C と IDL を一 緒にするのと同様に、) 3 つのすべての言語を一緒に取り扱う 1 つの Emacs モードがあります。とても成熟して完成したパッケージで、Emacs の配布に含 まれています。このモードは cc-mode または CC Mode と呼ばれます。 より詳しい説明あるいは新しいバージョンのダウンロードは http://www.python.org/emacs/ へどうぞ。 3.2.2. Perl Emacs で Perl コードを編集するためには、2 つのモードがあります。 1 つ 目は (期待している通り) perl-mode と呼ばれるもので、2 つ目は cperl- mode です。私はなぜ 2 つもモードがあるのか、理由も成り行きも知りません が (文書には書かれていない)、perl-mode のほうが Emacs で Perl コードを 編集するときのモードとしてはオリジナルだということがわかります。 cperl-mode よりも機能が少ないようで、 Perl の「突飛な」言語構成のなか には認識できないものもあります。 個人的には、私は、活発にメンテナンスされているように見えて、私がこれま でに欲しいと思った機能すべてを持っていた cperl-mode を使い、推奨しま す。最新のリリースは、ここで見付けることができます - ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs。 しかし、私の言葉をそのままに受け取らないでください。両方を試して、最も 必要にあったものを選んでください。 3.2.3. Python Python (とても人気があるもう 1 つのスクリプト言語) も、利用可能な Emacs モードを持っています。私が知る限りでは、それは GNU Emacs と一緒 ではなく、 XEmacs と一緒に配布されています。もっとも、どちらのエディタ でも大変うまく動作します。 python-mode は公式 Python web サイト http://www.python.org/emacs/python-mode/ から入手できます。 3.2.4. その他 プログラマの助けとなる、とてもとても多くの他の編集用モードが利用可能で す。そのようなお手伝いモードには次のようなものがあります - o シェルスクリプト (Bash, sh, ksh, csh, ...) o Awk, Sed, Tcl, ... o Makefile o 変更履歴 o 文書 o デバッグ そしてもっとたくさんあります。他のモードやアドインを見つけるためのさら なる情報は、この文書の ``他の情報源'' の節を参照してください。 3.3. オーサリング 凝った Emacs モードの数々は、コードを書く人々のためだけに限られたもの では ありません。 (どんな種類であれ) 文書を書いている人々もまた、 Emacs モードの広い品揃えの恩恵を受けられます。 3.3.1. スペルチェック ( ispell モード) 多くの種類の文書の著者は、時々スペルチェックをする必要があります。 GNU ispell をインストールしていれば、 M-x ispell と入力することで、現在の バッファのスペルチェックをすることができます。もしも ispell が知らない 語を見つけると、可能な置換えのリストを表示して入力を促し、その中から 1 つ (または 0) を選ばせます。それは機能的に、一般的な多くのフリーでない ソフトウェアパッケージのスペルチェッカと同等です。 3.3.2. HTML ( html-helper モード) 自分が時々 (あるいは良く) HTML ファイルを書いていることに気付いたなら ば、 html-helper-mode を試してみたくなるでしょう。それは http://www.santafe.edu/~nelson/tools/ から、文書の関連物として入手可能 です。 その名前が示す通り、html-helper-mode は、まだ HTML を手作業 -- 昔なが らの方法 -- で書いている多くの人々を手助けする道具を用意しています。 3.3.3. TeX ( tex-mode ) TeX で文書を書くときは、Emacs がバックスラッシュや括弧などの文字に色を 付けたり強調してくれると便利なことがよくあります。 tex-mode はそれを やってくれます。 私はもはや TeX で直接書くようなことはしませんが、書いていたころは、 TeX ソースをちょいと読みやすくするのにこのモードが役立ってくれました。 3.3.4. SGML ( sgml-mode ) 今読んでいる文書は SGML で書かれています (そしておそらく、現在読んでい る形式に変換されている)。 sgml-mode は SGML 文書のために、すべての基本 的なものを用意しています - 効果、強調、前方参照タグ、後方参照タグ、そ の他多くです。 3.4. 他のモード もちろん、生活を楽にしてくれる多くの手ごろなモードがあります。ここで は、人気があるものをいくつか紹介します - 3.4.1. バージョン管理 ( vc モード) vc モードは、ファイルのチェックインやチェックアウト、リリースの管理な どをとても簡単にしてくれる、大変人気のあるバージョン管理のバックエンド (RCS, SCCS, CVS) のインタフェースです。それは Emacs の標準部分 で、Emacs の文書中に説明があります。 3.4.2. シェルモード なぜ、わずかなシェルコマンドを実行するために、他の X のウィンドウや仮 想コンソールに切り替えるのですか? Emacs 内で行うようにして、面倒ごと から解放されてください。 M-x shell で、Emacs バッファ内にシェルが立ち上がります。 Emacs は舞台 裏で本当のシェルと対話しているので、普通のシェルプロンプトでできること は (vi や pine のようなフルスクリーンのプログラムの実行を除いて)、たい ていこのバッファで行うことができます。 これは Emacs の標準部分なので、Emacs のドキュメント中に情報を見つけら れるでしょう。 3.4.3. Telnet and FTP なぜ、telnet や FTP を実行するために、他の X のウィンドウや仮想コンソ ールに切り替えるのですか? それを Emacs 内で行うようにして、面倒ごとか ら解放されてください。 (もう、パターンに気付きましたか?) Emacs の内部でシェルを実行するのと同じように、telnet と ftp を実行する ことができます。自分自身でそれを経験するために、M-x telnet または M-x ftp を試してください。詳細についてうんざりするまで知りたければ、文書を 見てください。 3.4.4. Man なぜ、マニュアルページを読むために、他の X のウィンドウや仮想コンソー ルに切り替えるのですか? それを Emacs 内で行うようにして、面倒ごとから 解放されてください。 (約束です。もうやめます。) Emacs 内でシェルを実行するのと同じように、マニュアルページを読むことが できます。自分自身でそれを経験するために、M-x man を試してください。そ れ以上は、文書を見てください。 3.4.5. Ange-FTP ange-ftp から引用すると - This package attempts to make accessing files and directo- ries using FTP from within GNU Emacs as simple and transpar- ent as possible. A subset of the common file-handling rou- tines are extended to interact with FTP. (日本語訳) このパッケージは、GNU Emacs による FTP を使った ファイルとディレクトリへのアクセスを可能な限り簡単で透過的に するように試みています。一般的なファイル操作ルーチンのサブ セットは、FTP と互いに影響し合います。 これは、離れたマシン上のファイルを、ローカルにあるかのように扱うことが できることを意味します。異なるコンピュータ上のファイルを編集する必要が あるなら、 (少し違ったパス構文を使って) それを開けと Emacs に命ずるだ けです。ログインやファイル取得の細かいことは Emacs がやってくれます。 C-x C-s でファイルを保存する時は、ange-ftp は保存を途中で捕えて、離れ たマシンにファイルを書き戻します。 少し違ったパス構文は、このような感じです。ファイル名は ``myfile'' で ``user'' のディレクトリ、マシン名は ``my.host.org'' であれば、ファイル は次のように開く (C-x f) ことができます - /user@my.host.org:~user/myfile これもまた、Emacs 配布の標準部分なので、 Emacs 文書中に説明を見つける ことができます。 上の例を提供してくれた Etienne Grossmann (etienne@anonimo.isr.ist.utl.pt) に感謝します。 4. Emacs のカスタマイズ 仮想的に、すべての Emacs のカスタマイズは Lisp コードによって行われま す。Emacs の動作に影響する変数を変更すること、または Emacs に新しい関 数を追加することができます (または存在する関数を上書き -- それを置き換 えることが -- できます)。 4.1. 一時的なカスタマイズ Emacs のカスタマイズの実験をするときは、その場限りの方法でやりたいで しょう。もしも何かものすごく具合いが悪くなった場合は、 C-x C-c で Emacs を終了して、再び Emacs を実行することができます。常に反映させた い変更がわかったら、Emacs を起動するごとに影響を与える、自分自身の .emacs ファイルにそれを追加できます。これは次の節で説明します。 4.1.1. 変数代入 最も簡単なカスタマイズは、Emacs 中で変数の値を変更することによって成し 遂げられます。このリストコードは次のようになります - (setq 変数名 新しい値) 変数名 は変数の名前で、新しい値 は変数に与えたい値です (Lisp の言い方 では、値に変数を束縛します)。 注釈: 私は簡単のために、ここで多くの部分をもっともらしく説明していま す。 Lisp 関数である set そして setq-defaultさえも使う、私や他の人々を 見るかもしれません。もしも本当に知りたかったら、どんどん Emacs Lisp リ ファレンスでそれらを調べてください。 私の .emacs ファイルから 1 行を見てみましょう。 (setq-default transient-mark-mode t) 変数 transient-mark-mode は、マークしたときに領域を強調表示するかしな いかを管理します。多くの GUI アプリケーションでは、テキストの範囲を選 択するためにマウスのクリックやドラッグをした場合、反転または何か他の色 で強調表示します。 Emacs は変数 transient-mark-mode を (nil でない値 に) 設定することで、同じことをするようになります。 どんな値? さて、ここで余談を要約しましょう。多くのプログラミング言語は、真偽値の 概念を持っています。 C/C++ では、値が非零であれば真とみなします。 Perl では、非 null または非零の値が真です。 Lisp では、同じ考えを使用します が、名前とシンボルは異なります。 普通、真は t と、偽 (または null) は nil と記述します。他の言語のよう に、やはり、あらゆる非 nil 値は真とみなされます。 transient-mark-mode が何をするかの完全な説明を得るには、オンラインヘル プを使うことができます。 C-h v または M-x describe-variable を入力し て、それから transient-mark-mode を入力してください。もしも私のように 怠け者であれば、Tab キーを使って変数名を補完することができます。変数名 の一部を入力して、Tab キーを押してください。一意に Emacs がそれを識別 するのに十分な入力をしていれば、補完された全体の名前がそこに現れます。 人々がしばしば設定する変数には、他に fill-column があります。これはワ ードラップのためのスクリーンの幅を Emacs に知らせます。 (そして auto- fill-mode がこの値を考慮します)。何か不合理な値を設定するには、次のよ うに入力します - (setq fill-column 20) しかし、それだけでは実際には何もしません。入力した式を 評価する ように Emacs に知らせる必要があります。実際に評価するためには、ポイント (カー ソル) を式の最後に置いて、それから C-x C-e を入力します。今の場合は、 この入力が関数 eval-last-sexp を呼びます。それを実行した時、20 (または 何か使用した値) がスクリーン下部のミニバッファにエコーバックされること に気づくでしょう。それが評価した式からの返り値です。 動作を確認するために、文を一つ二つ入力してみてください。もしも偶然 auto-fill-mode を有効にしていたならば (多分していないでしょうが)、テキ ストが 20 カラムまでで折返されるのに気づくでしょう。そうでなければ、い くつかの入力をした後、関数 fill-paragraph を呼び出す M-q を入力してく ださい。実際にワードラップが実行されるでしょう。 4.1.2. ファイル関連 特別な型のファイルを開いた時に自動的に何かをするように、 Emacs を設定 できます (特別なファイルのアイコンをクリックした場合に、 GUI が自動的 に特定のアプリケーションを起動するのと同じように)。例えば、私は .txt 拡張子のファイルを開いたときにはいつも、自動的に text-mode に Emacs が 切り替わって欲しいです。おや、それはすでにできていますね。:-) それで は、``README'' という名前のファイルを開いたときに、いつも text-mode に 入るように Emacs に命令しましょう。 (setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist)) 何だって? 本当に知る必要はない Lisp プログラミングの山に突っ込むことはしませんが (しかし学ぶことに不都合はないでしょう)、変数 auto-mode-alist がペアの リストを含むことを言わせてください。各々のペアは正規表現と Emacs のモ ード名を含んでいます。開いたファイルが正規表現 (この場合は、文字列 README) にマッチした場合、Emacs は指定したモードを開始します。 上の変な構文は、私たちがペアを実際にもう一個モードリストに加えようとし ているためです。すでに入っている値は消えない、ということを確認せずに auto-mode-alist を設定したくはないでしょう。 また、.html または .htm で終るファイルを開いたときにいつも Emacs を html-helper-mode に自動的に切り替えたいならば、自分の .emacs ファイル にこのように追加します - (setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist)) 可能性には本当に終りがありません。 4.2. .emacs ファイルの使用 Emacs である程度の時間を過ごし、カスタマイズについての基本的な考えを 持った後には、多分 2, 3 のものを永久に(または少なくとも考えを変えるま えで) カスタマイズしたままにしたくなるでしょう。もしも日々の基本的なこ とに Emacs を使っていると気づいたならば、時間とともに .emacs ファイル が大きくなっていくことにも気づくでしょう。それは、こう動いて欲しいとい う思い通りに Emacs を動かす方法をあなたが理解したということなので良い こと です。多くのソフトウェア製品がそうさせてくれないのは残念なことで す。 まだ見当をつけていない場合のために説明すると、 Emacs は、起動する時は いつも、ホームディレクトリの .emacs という名前のファイルを探します。 .emacs ファイルは、自動的に実行させたい、私たちがここで扱っているカス タマイズを含む Lisp コードを載せるべき場所です。 私の .emacs ファイルから他の例 - (setq inhibit-startup-message t) 変数 inhibit-startup-message は、Emacs が始まるときにウェルカムメッセ ージを表示するかどうかを管理します。しばらくして、私はそれを見るのに飽 きたので (私はヘルプやいろいろなものを見つけ出す方法を知っていたの で)、私はそれをオフにする方法を探すようになりました。 練習として、自分自身の .emacs ファイルを作ることに挑戦して、その行を追 加しましょう。それから Emacs を終了させて、もう一度起動しましょう。も う、ウェルカムメッセージを見ることはないでしょう。 しばしば Emacs のモード (またはパッケージ) について読んでいるとき、そ の文書は特殊な方法でモードまたはパッケージを働かせようとして、 .emacs ファイルにいくつかのコードを追加することを勧めてくるでしょう。 The GNU Emacs FAQ (C-h F) は、.emacs ファイルに関連するいくつかの役立 つ項目を含んでいます。 4.3. パッケージのカスタマイズ Emacs の人気が伸びて発展していくうちに、誰かが ``見習いユーザに Emacs をカスタマイズさせる、もっと良い方法が必要だよ'' と言いました。そして customizeが生まれました。 Customoize は Emacs のカスタマイズ部分のより直感的な方法を用意していま す。それを試すには、Help メニューの Customize サブメニューを選ぶか、M- x customize を入力するかしてください。 Customize グループは、``Editing'', ``Programming'', ``Files'' などのよ うな論理グループを含みます。グループのいくつかは、さらにサブグループを 含みます。 Customize インタフェースを使って変更を行った場合、Emacs は変更を .emacs ファイルに保存します。変更を簡単に詳しく調べることが (そして変 更することが) できるので、 Customize はいくぶん扱いやすいと言えます。 私は Customize インタフェースを使わないので、それについてはこれ以上言 えません。 4.4. X のウィンドウ表示 お行儀の良い X アプリケーションと同様に、 Emacs は X リソースを尊重し ます。それは、xterm、nxterm などができるような、初期色、ジオメトリ、そ の他の X 特有の属性を管理できることを意味します。 これは、私の ~/.Xdefaults ファイルの関連する部分です - emacs*Background: DarkSlateGray emacs*Foreground: Wheat emacs*pointerColor: Orchid emacs*cursorColor: Orchid emacs*bitmapIcon: on emacs*font: fixed emacs.geometry: 80x25 X リソースについての詳細は、X のマニュアルページを見てください。 Chris Gray (cgray4@po-box.mcgill.ca) もまた言及しています - Debian では、~/.Xdefaults は使われていないようです。しかしな がら、Debian の人々は、与えられたものを /etc/X11/Xre- sources/emacs に置くことができ、そして彼らは RedHat を使って いた時のきれいな色を利用できます。 5. 人気のあるパッケージ Emacs で利用可能な多くの異なるモードに加えて、多くのアドオンパッケージ もまた存在します。それらは新しいモード以上のものなので、私はパッケージ と呼んでいます。それらはしばしば、特別なユーティリティを含んでいるか、 モードと呼ぶのが妥当でないほど大きなものです。さらに他の場合は、それら は他の Emacs のモードやパッケージを拡張したり統合したりするソフトウェ アです。区別づけは全く明確ではありませんが、それでいいのです。 5.1. VM (メール) VM FAQ から引用 - VM (View Mail) is an Emacs subsystem that allows mail to be read and disposed of within Emacs. Commands exist to do the normal things expected of a mail user agent, such as gener- ating replies, saving messages to folders, deleting messages and so on. There are other more advanced commands that do tasks like bursting and creating digests, message forward- ing, and organizing message presentation according to various criteria. (日本語訳) VM (View Mail) は、Emacs 内でメールを読んだり処理 したりすることを許す Emacs のサブシステムです。返信を生成す る、フォルダにメッセージを保存する、メッセージを削除するなど の、メールユーザエージェントとして期待された普通のことを行う ためのコマンドが存在します。ダイジェストの破壊や生成をする、 メッセージを転送する、いろいろな基準に従ってメッセージ表示を 整理する、といったような仕事をする他の先進的なコマンドもあり ます。 私が初めて Emacs を使い始めたとき、私はしばらくの間 VM を試しに使って みました。私はそれが、Pine、Elm、その他多くのメールプログラムのすぐれ た代用になることに気づきました。しかし、私はメールとニュースを読むため に別々のプログラムを使いたくありませんでした。 VM は現在、活発に開発さ れ、良くサポートされています。 ここから入手可能です - http://www.wonderworks.com/vm/。 5.2. Gnus (メールとニュース) GNUS マニュアルから引用 - Gnus is a message-reading laboratory. It will let you look at just about anything as if it were a newsgroup. You can read mail with it, you can browse directories with it, you can ftp with it---you can even read news with it! (日本語訳) Gnus はメッセージ読み取り実験室です。 Gnus はそれ がニュースグループであるかのように、何でも見せてくれます。メ ールを読むこと、ディレクトリを閲覧すること、ftp することがで きます --- ニュースさえも読むことができます! Gnus tries to empower people who read news the same way Emacs empowers people who edit text. Gnus sets no limits to what the user should be allowed to do. Users are encouraged to extend Gnus to make it behave like they want it to behave. A program should not control people; people should be empowered to do what they want by using (or abusing) the program. (日本語訳) Gnus は、Emacs がテキストを編集している人々に権限 を与えるのと同じ方法でニュースを読む人々に権限を与えようとし ます。 Gnus は、ユーザが許されたことに制限を設けません。ユー ザは、振舞って欲しいように振舞わせるように Gnus を拡張するこ とを勧められています。プログラムが人々を管理してはなりません - 人々は、プログラムを使うこと (または酷使すること) によって したいことをするために、権限を与えられるべきです。 GNUS は私が現在メールとニュースのために使っているものです (上で暗示し ていたように)。 GNUS もまた、現在、活発に開発され、良くサポートされて います。 それはここから入手可能です - http://www.gnus.org/。 5.3. BBDB (A rollodex) BBDB は `Insidious Big Brother Database' (影のビッグ・ブラザー・データ ベース) の略で、多くの人気のある Emacs メールパッケージ (VM や GNUS を 含む) と一緒に動作する、住所録風の Emacs 用プログラムです。 ここから入手可能です - http://pweb.netcom.com/~simmonmt/bbdb/index.html。 5.4. AucTeX (もう 1 つの TeX モード) AucTeX は TeX ファイルを編集するための、もう 1 つのモードです。 AucTeX web サイトから引用 - AUC TeX is an extensible package that supports writing and formatting TeX files for most variants of GNU Emacs. Many different macro packages are supported, including AMS TeX, LaTeX, and TeXinfo. (日本語訳) AUC TeX は、GNU Emacs の多くの変種のための、TeX ファイルを書くことと整形することを支援する、拡張性のあるパッ ケージです。 AMS TeX, LaTeX, TeXinfo を含む、多くの異なるマ クロパッケージがサポートされています。 ここから入手可能です - http://sunsite.auc.dk/auctex/。 6. 他の情報源 この節は、書籍、web サイト、ニュースグループ、メーリングリスト、その他 Emacs についての情報を見つけられる場所を取り扱っています。 6.1. 書籍 Emacs を学ぶのに使える良い書籍が数冊あります。加えて、Emacs (と vi) に ついても 1 章か 2 章触れている Linux や Unix の書籍もいっぱいありま す。 6.1.1. Learning GNU Emacs 著者: Debra Cameron, Bill Rosenblatt, Eric S. Raymond 出版社: O'Reilly & Associates - http://www.ora.com/ Amazon.com から Associates program によって割引して購入できます - http://www.amazon.com/exec/obidos/ASIN/1565921526/ 解説: まず第一に、これは多分最高の書籍です。 HOWTO を読み、一通り FAQ を見た後で、この本は包括的でとても親しみやすいチュートリアルとして役に 立つでしょう。 訳注: 邦訳は「入門 GNU Emacs 第 2 版」というタイトルで、オライリー・ ジャパンより発行されています。 6.1.2. Writing GNU Emacs Extensions 著者: Bob Glickstein 出版社: O'Reilly & Associates - http://www.ora.com/ Amazon.com から Associates program によって割引して購入できます - http://www.amazon.com/exec/obidos/ASIN/1565922611/ 解説: しばらくの間 Emacs を使い、自分自身のモードを書くことに挑戦した い、またはいくつかの先進的なカスタマイズに挑戦したいと決心した後に、こ れはうってつけの書籍です。 Lisp を教えようとはしていませんが、言語の簡 単な手引きが含まれています。 訳注: 邦訳は「GNU Emacs 拡張ガイド」というタイトルで、オライリ─・ジャ パンより発行されています。 6.1.3. Programming in Emacs Lisp: An Introduction 著者: Robert J. Chassell README ファイルより - This is an elementary introduction to programming in Emacs Lisp for people who are not programmers, and who are not necessarily interested in programming, but who do want to customize or extend their computing environment. (日本語訳) これは、必ずしもプログラミングに興味を持っていな いが、コンピュータ環境をカスタマイズまたは拡張したいという、 プログラマでない人々のための Emacs Lisp プログラミングの初歩 的な入門書です。 このマニュアルは、GNU FTP サーバ ftp://prep.ai.mit.edu/gnu/emacs/ から anonymous FTP でそっくりそのまま取り出せます。 きちんと印刷されたバージョンは、Amazon.com から Associates program に よって購入できます - http://www.amazon.com/exec/obidos/ASIN/1882114418/jeremydzawodny/。 解説: これは、Emacs Lisp のための良い入門書です -- たとえばりばりのプ ログラマではない場合でも。 訳注: 邦訳は「Emacs Lisp プログラミング入門」というタイトルで、アスキ ーより発行されています。 6.1.4. The GNU Emacs Lisp Reference Manual 著者: Richard Stallman 出版社: The Free Software Foundation - http://www.fsf.org/ このマニュアルは、GNU FTP サーバから anonymous FTP でそっくりそのまま 取り出せます ftp://prep.ai.mit.edu/gnu/emacs/。 解説: これは Emacs Lisp プログラミング言語への最も権威のあるガイドで す。 訳注: 邦訳は「GNU Emacs Lisp マニュアル」というタイトルで、アスキーよ り発行されています。 6.2. Web サイト 6.2.1. EMACSulation EMACSulation は、http://www.linuxgazette.com/ にあるオンラインマガジン Linux Gazette に執筆している Eric Marsden によるコラムです。現時点の最 新コラムは http://www.linuxgazette.com/issue39/marsden.html にありま す。以前の記事へのリンクは、記事の下部を調べてください。 6.3. ニュースグループ 文字列 ``emacs'' を含むニュースグループでローカルニュースの配送を検索 すれば、多分たくさん発見できるでしょう。 o comp.emacs o comp.emacs.sources o gnu.emacs o gnu.emacs.bug o gnu.emacs.help o gnu.emacs.sources 和訳: 日本語中心のニュースグループでも以下のものがあります: o fj.editor.emacs o fj.editor.mule o fj.editor.xemacs 6.4. メーリングリスト 私が現在知っている唯一の Emacs 専門のメーリングリストは、 NT-Emacs リ ストです。それは Microsoft Windows 版の Emacs を使っている人のためのリ ストです。これ以上の情報は、NT-Emacs FAQ http://www.cs.washington.edu/homes/voelker/ntemacs.html を参照してくだ さい。 6.5. Emacs Lisp アーカイブ Emacs Lisp アーカイブの README より - The Emacs Lisp archives on ftp.cis.ohio-state.edu contain various pieces and packages of Emacs Lisp code. Emacs Lisp is the language used to extend the GNU Emacs editor pub- lished by the Free Software Foundation. Although much Emacs Lisp code is included in the GNU Emacs distribution, many people have written packages to interface with other sys- tems, to better support editing the programming language they use, to add new features, or to change Emacs' default behavior. Most of the contents of this archive have been written by individuals and distributed publicly over the Internet through the info-emacs or info-gnu-emacs mailing lists or the comp.emacs, gnu.emacs, or gnu.emacs.sources newsgroups. (日本語訳) ftp.cis.ohio-state.edu の Emacs Lisp アーカイブ は、Emacs Lisp コードの様々な部分とパッケージを含んでいま す。 Emacs Lisp は Free Software Foundation によって公開され ている GNU Emacs エディタを拡張するために使われる言語です。 多くの Emacs Lisp コードが GNU Emacs の配布に含まれています が、多くの人々は、他のシステムとのインタフェースのため、使っ ているプログラミング言語の編集のサポートをもっと良くするた め、新しい機能を追加するため、または Emacs のデフォルトの振 舞いを変更するためにパッケージを書きます。このアーカイブの多 くの内容物は、個人によって書かれ、 info-emacs または info- gnu-emacs メーリングリスト、または comp.emacs, gnu.emacs, gnu.emacs.sources ニュースグループを通してインターネット上に 公に配布されたものです。 アーカイブは ftp://ftp.cis.ohio-state.edu/pub/emacs-lisp/ から anonymous FTP で入手可能です。 注釈: 私が伝えられる限りでは、Emacs Lisp アーカイブは少しずつ時代遅れ になってきています。私は、それらが確かに存在するにも関わらず、新しくそ こに出現する (または更新された) パッケージをほとんど見ません。それらは comp.emacs.sources ニュースグループにポストされます (もしもこれが間 違っているならば、遠慮なく教えてください)。 7. クレジット 次の人々が、この文書の成就に貢献しました。 o Robert Vollmert o Larry Brasfield o Etienne Grossmann o Thomas Weinell o Adam C. Finnefrock o Chris Gray o Robert J. Chassell o Isaac To o Matteo Valsasna o Tijs van Bakel 訳注:日本語訳にあたっては次の方々にコメントをいただきました。 o 蔦 博和さん o 大森保英さん o 森本 淳さん o 武井伸光さん