GNU Emacs FAQ

Copyright © 2001–2021 Free Software Foundation, Inc.
Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2000 Reuven M. Lerner
Copyright © 1992, 1993 Steven Byrnes
Copyright © 1990, 1991, 1992 Joseph Brian Wells

This list of frequently asked questions about GNU Emacs with answers (“FAQ”) may be translated into other languages, transformed into other formats (e.g., Texinfo, Info, HTML, PDF), and updated with new information.

The same conditions apply to any derivative of the FAQ as apply to the FAQ itself. Every copy of the FAQ must include this notice or an approved translation, information on who is currently maintaining the FAQ and how to contact them (including their e-mail address), and information on where the latest version of the FAQ is archived (including FTP information).

The FAQ may be copied and redistributed under these conditions, except that the FAQ may not be embedded in a larger literary work unless that work itself allows free copying and redistribution.

[This version has been heavily edited since it was included in the Emacs distribution in 1999.]


[ < ] [ > ]   [Contents] [Index] [ ? ]

The GNU Emacs FAQ

これはGNU EmacsのFAQ(Frequently Asked Questions: よくある質問)です。

このFAQはGNU Emacsの一部として保守されています。何か間違いを見つけたり提案がある場合には、それらを報告するためにM-x report-emacs-bugを使うようお願いします。

これはEmacs 27.2とともに配布されているバージョンのFAQであり、主にそのバージョンについて記述しています。それより古いバージョンについての情報があったとしても、(今となっては歴史的な関心のためだけとなった)非常に古いリリースに関する詳細は削除されています。これらに興味がある場合には古いバージョンのEmacsに同梱されているバージョンのFAQ、あるいはこのドキュメントのEmacsソースレポジトリのヒストリーを参照してください。

Emacsのリリースバージョンはとても安定しているので、常に最新リリースの実行をお勧めします。

このFAQは非常に頻繁に更新されている訳ではありません。Emacsについての疑問がある場合には、Emacsマニュアルが最良の出発点であることが多々あります。

Copyright © 2001–2021 Free Software Foundation, Inc.
Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2000 Reuven M. Lerner
Copyright © 1992, 1993 Steven Byrnes
Copyright © 1990, 1991, 1992 Joseph Brian Wells

This list of frequently asked questions about GNU Emacs with answers (“FAQ”) may be translated into other languages, transformed into other formats (e.g., Texinfo, Info, HTML, PDF), and updated with new information.

The same conditions apply to any derivative of the FAQ as apply to the FAQ itself. Every copy of the FAQ must include this notice or an approved translation, information on who is currently maintaining the FAQ and how to contact them (including their e-mail address), and information on where the latest version of the FAQ is archived (including FTP information).

The FAQ may be copied and redistributed under these conditions, except that the FAQ may not be embedded in a larger literary work unless that work itself allows free copying and redistribution.

[This version has been heavily edited since it was included in the Emacs distribution in 1999.]


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1 FAQの表記について

このチャプターではGNU Emacs FAQ、並びにEmacsドキュメントで使用する表記について説明します。これがFAQを読む最初の機会の場合、あるいはFAQで使用されている表記や用語について混乱したらこのセクションを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 C-hC-M-aRETESC a等は何を意味するのか?

  • C-x:Controlキーを押したままxキーを押下する
  • M-x: Metaキー(コンピューターにMetaキーがなければMetaキーがない、どうすれば?を参照)を押したままxキーを押下する
  • M-C-x: ControlMetaの両方を押したままxキーを押下する
  • C-M-x: 上記と同義
  • LFD: ラインフィードまたは改行; C-jと同じ
  • RET: Returnのこと、Enterと記される場合もあり; C-mと同じ
  • DEL: Deleteのこと、通常はBackspace同じではない; C-?と同じ (deleteでEmacsのヘルプが呼び出される場合にはBackspaceキーがヘルプを呼び出すのはなぜ?を参照)
  • ESC: Escapeのこと; C-[と同じ
  • TAB: Tabのこと; C-iと同じ
  • SPC: Spaceバー

1つのキー(およびいくつかの単一キーシーケンス)より長いキーシーケンスは以下のようにクォート内部や行にその文字自体を記述します:

  M-x frobnicate-while-foo RET

このようなキーシーケンス内にある実際のスペースはすべて無視する必要があります; 実際にスペースキーの押下を意味するのはSPCだけです。

C-x (C-?は例外)により送信されるASCIIコードは単にxを押下時に送信される値から96(大文字のXでは64)を減じた値であり、これは0から31になるでしょう。UnixおよびGNU/Linuxの端末においては、M-xが送信するASCIIコードは単にxを押下時に送信される値に128を加えた値になります。基本的にはControlはビット5とビット6をオフにして、Metaはビット7をオンにします1

C-? (別名DEL)はASCIIコードの127です。127はビットの5と6がどちらもオンなので、C-?を“control”キーと呼ぶのは誤った呼び方です。更にほとんどありませんがC-?ASCIIコードの127を生成するキーボードも存在します。

Keys in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 M-x commandの意味は?

M-x commandM-xをタイプしてからコマンドの名前、その後にRETをタイプする(M-xRETの意味があやふやならC-hC-M-aRETESC a等は何を意味するのか?を参照)。

(デフォルトでは)M-xはコマンドexecute-extended-commandを呼び出します。このコマンドによってコマンド名を覚えていれば任意のEmacsコマンドを実行できます。コマンド名を覚えることができなければ補完にはTABSPC、利用可能なコマンドの一覧は?、以前に入力したコマンドの確認にはM-pM-n(または上下の矢印)をタイプできます。Emacsのコマンド(command)とはインタラクティブ(interactive: 対話的)なEmacs関数のことです。

システム管理者によってexecute-extended-command呼び出しが別のキーにバインドされているかもしれません。Doとラベル付けされたキーをもつようなキーボードなら、これを行うための良い候補になります。

非インタラクティブなEmacs関数の実行が必要ならEmacs Lispのコード片を実行(“evaluate”)するには?を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 EmacsマニュアルでトピックXXXを読むには?

わたしたちがEmacsマニュアル内のあるtopicを参照する際には、C-h i m emacs RET m topic RETとタイプすれば(壊れていなければ)そのマニュアルノードの中を読むことができます。

これはInfo、つまりGNUハイパーテキストドキュメントブラウザを呼び出します。Infoの使用方法をまだご存知なければ、Info内で?をタイプしてください。

わたしたちがtopic:subtopicで参照する場合にはC-h i m emacs RET m topic RET m subtopic RETとタイプしてください。

これらのコマンドが期待した通りに機能しなければ、システム管理者がInfoファイルをインストールしていないか、正しくインストールされていないかもしれません。この場合には苦情を申し立てるべきでしょう。

Info内でこのFAQを読んでいるなら、リファレンス上で単にRETを押下すればフォローできます。

Emacsマニュアルのハードコードをご所望ならEmacsマニュアルの印刷版コピーを入手するには?を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 src/config.hsite-lisp/default.el等は何なのか?

これらはEmacsとともに配布されるファイルです。Emacsディストリビューションはetclispsrc等のサブディレクトリーに分かれています。これらの内のいくつか(etclispなど)はインストール済みEmacsとソースの両方に存在しますが、ソース内でのみ見いだせるものもあります(srcなど)。

Emacsを使っているもののシステム上のどこにあるか判らない場合には、Emacsを起動してC-h v data-directory RETとタイプしてください。表示されるディレクトリー名は、etcディレクトリーがインストールされたフルパスになるでしょう(このフルパスはEmacs変数data-directoryに記録されており、C-h vでこの値と変数のドキュメントが表示される)。

Infoディレクトリーの場所(Infoドキュメントが格納されている場所)は、変数Info-default-directory-listに保持されています。この変数の値(ディレクトリー名のリスト)を確認するにはC-h v Info-default-directory-list RETを使用してください。このリスト内にある最後のディレクトリーに、恐らくもっとも多くのInfoファイルが格納されているでしょう。デフォルトではEmacsのInfoドキュメントは/usr/local/share/infoにあります。

etcディレクトリー内にあるいくつかのファイルに関する情報については利用できるEmacs情報のファイルは?を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 FSF、GNU、RMS、GPLとは何なのか?

FSF

フリーソフトウェア財団(Free Software Foundation)

GNU

GNU’s Not Unix(GNUはUnixではない)

RMS

Richard Matthew Stallman

GPL

GNU 一般公衆利用許諾書(GNU GENERAL PUBLIC LICENSE)

フリーソフトウェア財団(Free Software Foundation)のタイトルにある“フリー(free)”とは、“ゼロコスト(zero cost)”ではなく“自由(freedom)”を意図した単語です。GPLの対象となるソフトウェアにたいして、もし望むなら誰でも対価を請求できます。とはいえ実際にはGPLが課した自由により、誰でもGPLソフトウェアの再販や譲渡を行う権利を有するので、常に誰か他の人からより少ない金額でソフトウェアを入手できることから低価格へとつながります。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2 一般的な質問

このチャプターではEmacs、フリーソフトウェア財団や関連する組織にたいする一般的な問いが含まれています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 GNUのcopyleftとは法的に実際には何を意味するのか?

GNU 一般公衆利用許諾書、いわゆるGPL(コピーレフト)の真の法的な意味合いは、裁判官がその有効性と範囲を裁定した場合にのみ明らかになります。判例として定められるようなGPLが関与する著作権侵害の訴訟はこれまでに一度もありませんでした。GPL条件への違反によって企業への訴訟が起こされましたが、これまでのところすべてが法廷外で(原告に有利に)和解されています。この問題に関しての議論は、どうかこの問題について盛大に言い合うために作成されたニュースグループnews:gnu.misc.discussで行うようお願いします。

RMSは記しています:

GNUコピーレフトの法的な意味は、Emacsがフリーソフトウェアプロジェクトであり、Emacsに関連する作業もフリーソフトウェアであるべきだという精神ほど重要ではありません。“フリー(free)”とはすべてのユーザーがEmacsを学び、共有して、変更や改善を行う自由(freedom)をもっているという意味です。すべての人がこの自由を有することを保証するために、あなたがEmacsのあるバージョンや関連プログラムを配布する際には、それを受け取る人にソースコードも渡すことによって、あなたが楽しんだのと同じ自由を分け与えてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 What are appropriate messages for the various Emacs newsgroups?

Emacsメーリングリストはthe Emacs Savannah pageに記述があります。それらのうちのいくつかはニュースグループへゲートウェイされています。

Emacsプログラム全般に関する議論はニュースグループnews:comp.emacsnews:gnu.emacs.helpはGNU Emacsに特化したニュースグループです。したがってある問いにたいして適切なニュースグループは1つだけなので、両方のグループへの多重投稿には意味がありません。

問題について派手に言い合うために作成されたnews:gnu.misc.discussを除いて、“非フリー(non-free)”なソフトウェアを推奨するようなメッセージはgnu.*ニュースグループのすべてにおいて受け入れ難いものとみなされます。“非フリー”なソフトウェアにはエンドユーザーが自由にソースコードを改変したり拡張機能の取り替えができないすべてのソフトウェアが含まれます。そのようなソフトウェアを推奨するフォローアップを投稿する際には、‘Newsgroups:’行からgnu.*グループを削除するよう注意してください。

news:gnu.emacs.bugではバグレポートを目にしますが、このニュースグループに直接バグレポートを投稿することは避けてください(Emacsのバグやその他の問題はどこにレポートすれば?を参照)。

最後にGNUのメーリングリストやニュースグループに投稿する前にGNU Kind Communications Guidelinesを一読することをお勧めします。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.3 news:gnu.emacs.helpや他のGNUグループへの古い投稿はどこで入手できる?

網羅する範囲において意図せぬずれがあるかもしれませんが、FSFはGNUメーリングリストすべてのアーカイブを長年保守してきました。このアーカイブがthe GNU mail archiveでウェブ上で閲覧できます。

GoogleのようなウェブベースのUsenet検索サービスでもgnu.*はアーカイブされています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.4 Emacsのバグやその他の問題はどこにレポートすれば?

コマンドM-x report-emacs-bugを使用するのがEmacsのバグを報告する正しい方法です。このコマンドは必要な情報と正しいEメールアドレスbug-gnu-emacs@gnu.orgでメールバッファーをセットアップします。ここに送信したものはニュースグループnews:gnu.emacs.bugでも目にすることができますが、バグレポートの提出にはどうかニュースではなくEメールを使用してください。これによって信頼できる返信アドレスが保証されるので、詳細についてあなたに連絡をとることができるようになります。

バグを報告する前に必ずEmacsマニュアルの“Bugs”セクションを読んでください。マニュアルには有用なバグレポートを投稿する方法(Reporting Bugs in The GNU Emacs Manualを参照)が詳細に渡って記述されています(マニュアルの読み方が判らなければEmacsマニュアルでトピックXXXを読むには?を参照)。

RMSは述べています:

バグレポートをthe help-gnu-emacs mailing list (news:gnu.emacs.helpに投稿される効果をもつ)に送信するのは、(ほとんどは問題を解決するアイデアをもたない単なるユーザーである)多数の人たちの時間を不必要に費やさせるので望ましくありません。The bug-gnu-emacs listなら、恐らく何をするべきかもっと知識があり、他のものよりもEmacsのメッセージを受け取りたいと表明している、より少ない人たちにメッセージを届けられます。

RMSはnews:gnu.emacs.helpへ投稿しても問題がない場合について述べています:

バグをレポートして利用可能な修整について収穫が得られなかったら適切な遅延(1週間とか)を経た後で、あなたを助けられる誰かに助けを求めるためにgnu.emacs.helpへ投稿することに問題はありません。

バグを発見したのか確信がもてない場合には、RMSの好意による以下のそれほど徹底はされていないリストを検討してみてください:

Emacsがクラッシュしたら、それはバグです。Emacsのビルド時にコンパイルがエラーとなるなら、それはバグです。ビルド時にEmacsがクラッシュしたら、それはバグです。ドキュメントに記述された通りにLispコードが処理を行わなければ、それはバグです。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.5 How do I unsubscribe from a mailing list?

あなたがlistという名前のGNUメーリングリストからメールを受信しているなら、アドレスlist-request@gnu.orgにリクエストを送信すれば登録解除できるはずです。メーリングリストのメールには通常ならメッセージヘッダー(‘List-Unsubscribe:’)、あるいはフッターのいずれかに登録を解除する方法を告げる情報が含まれています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.6 How do I contact the FSF?

最新の情報はthe FSF contact web-pageを参照してください。一般的な対応ならinfo@fsf.orgに送信できます。

FSFに直接アイテムを注文する方法の詳細はFSF on-line storeを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3 助けを得るには

このチャプターではEmacsでヘルプを得る方法について説明します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Emacsは初めて; 基本的な編集を行うには?

マイペースで学べるチュートリアルを呼び出すにはC-h tとタイプします。単にC-hとタイプすることでヘルプシステムにエンターします。このチュートリアルはEmacs 22以降はフランス語、ドイツ語、日本語、ロシア語等、英語以外の多くの言語で利用できるようになりました。言語を選んでチュートリアルを開始するにはM-x help-with-tutorial-spec-language RETとタイプしてください。

ローカルのキーボードを処理するために、C-hDELのように振る舞うようにシステム管理者が変更しているかもしれません。ヘルプの呼び出しにはかわりにM-x help-for-helpを使用できます。システム上でヘルプを呼び出すキー(もしあれば)を見つけるにはM-x where-is RET help-for-help RETとタイプします。これはエコーエリア内にカンマで区切られたキーシーケンスのリストをプリントします。リストされた各キーシーケンスの最後の文字は無視してください。結果として得られたキーシーケンス(F1が一般的)のそれぞれがヘルプを呼び出します。

Emacsのヘルプが単一のキーで呼び出せればもっとも良く機能します。この値は変数help-charに格納されているはずです。

http://web.psung.name/emacs/ではEmacsのスライドやチュートリアルをいくつか見つけることができます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 Emacsで何かを行う方法を見つけるには?

Emacsで物事を行う方法を見つけるには複数の手法があります。

  • Infoハイパーテキストリーダーを通じてEmacsマニュアルの完全なテキストが利用できます。Infoモードでマニュアルを表示するにはC-h rとタイプしてください。Infoにエンター直後にhとタイプすれば、その使用方法に関する短いチュートリアルが提供されるでしょう。
  • 特定の問題やコマンド、変数について述べているマニュアルのセクションを素早く見つけるにはC-h i m emacs RET i topic RETとタイプします。これで正しいマニュアル箇所に辿り着けないようなら、必要なものが見つかるまで, (カンマ)を繰り返し押下してください(i,はタイプされたtopicをEmacsマニュアルの全インデックスから探すインデックス検索関数を呼び出すキー)。
  • C-h a (M-x command-apropos)を使用すれば、特定の単語を含んだすべてのコマンド(実際には正規表現にマッチしたコマンド)を一覧できます。
  • コマンドC-h F (Info-goto-emacs-command-node)はコマンド名の入力を求めて、そのコマンドの記述があるEmacsマニュアルのセクションの検索を試みます。
  • M-x aproposを使用すれば名前に特定の単語を含んだ関数およびコマンドをすべて一覧できます。
  • M-x apropos-documentationを使用すればドキュメントが正規表現または文字列ににマッチする関数およびコマンドをすべて一覧できます。
  • FSFからマニュアルのハードコードを注文できます。Emacsマニュアルの印刷版コピーを入手するには?を参照してください。
  • コマンドとそれらを呼び出すキーを一覧する印刷されたリファレンスカードを入手できます。$2(または$10か$18)でFSFに注文するか、Emacsディストリビューション内のファイルetc/refcards/refcard.texまたはetc/refcards/refcard.pdfを自分でプリントできます。バージョン21.1以降のEmacsディストリビューションには複数の言語に翻訳されたリファレンスカードが同梱されています。etc/refcards/lang-refcard.* (langは言語のアルファベット2文字コード)という名前のファイルを探してみてください。たとえばドイツ語バージョンのリファレンスカードはetc/refcards/de-refcard.texetc/refcards/de-refcard.pdfにあります。
  • Emacsには他にもヘルプや情報を得るためのコマンドが多数存在します。これらのコマンドの一覧を得るにはC-hの後に‘?’をタイプしてください。

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 Emacsマニュアルの印刷版コピーを入手するには?

Emacsマニュアルの印刷されたコピーわFSFに注文できます。詳細はFSF on-line storeを参照してください。

この数百ページに及ぶマニュアルを自分でプリントする勇気があるなら、マニュアルの完全なTexinfoソースもEmacsディストリビューションのdoc/emacsディレクトリーにあります(Texinfoファイルをプリントするには?を参照)。

どうしても自分でコピーをプリントする必要があるもののTeXがない場合には、

https://www.gnu.org/software/emacs/manual/からPostScriptやPDF(あるいはHTML)のバージョンを入手できます。

Emacsからマニュアルを閲覧する方法についてはEmacsで何かを行う方法を見つけるには?を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 Emacs Lispではどこでドキュメントを入手すれば?

Emacsでは関数ならC-h f、変数ならC-h vとタイプしてドキュメントを入手できます。

詳細についてはEmacs LispリファレンスマニュアルがInfo形式で利用可能です(Emacs Lisp in The Emacs Lisp Reference Manualを参照)。

FSFにマニュアルのハードコードを注文することもできます。詳細はFSF on-line storeを参照してください(このマニュアルは常にプリントされる訳ではない)。

Emacs LispリファレンスマニュアルのHTMLバージョンは

https://www.gnu.org/software/emacs/elisp-manual/elisp.htmlから利用できます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 Texinfoドキュメントをインストールするには?

Emacsのリリースにはビルド前のInfoファイルが同梱されており、通常のインストールプロセスによって正しい場所に配置されます。これはInfoファイルを提供するほとんどのアプリケーションにも当てはまります。以降は手作業で追加のInfoファイルをインストールしたいユーザーだけに関係のあるセクションです。

まずはTexinfoソースファイルをInfoファイルにしなければなりません。

https://www.gnu.org/software/texinfo/にあるTexinfoパッケージの一部として利用可能なスタンドアロンプログラムmakeinfoを使用してこれを行うことができます。

TexinfoフォーマットについてはTexinfoパッケージに同梱されているTexinfoマニュアルを読んでください。このマニュアルはInfoフォーマットでもインストールされるので、EmacsからC-h i m texinfo RETとタイプして読むことができます。

かわりに変換したいマニュアルのTexinfoソースファイルをEmacsでvisitした後にコマンドM-x texinfo-format-bufferを使用することもできます。

texinfo-format-buffermakeinfoはどちらも実行結果のInfoファイルをEmacsのInfoツリーにインストールしません。Infoファイルをインストールするには以下の手順を行ってください:

  1. インストール済みEmacsディストリビューションのinfoディレクトリーにファイルを移動する。場所が判らなければsrc/config.hsite-lisp/default.el等は何なのか?を参照のこと。
  2. メインのInfoディレクトリーメニュー更新のために、以下のようにしてTexinfoディストリビューションの一部であるinstall-infoコマンドを実行する。:
     install-info --info-dir=dir-path dir-path/file
    

    ここでdir-pathは生成したInfoファイルをコピーしたディレクトリーへのフルパス、fileは生成してインストールしたいInfoファイルの名前。

    インストール済みのinstall-infoコマンドがなければインストール済みEmacsディストリビューションのファイルinfo/dirを編集してインストールされているInfoパッケージ内のトップレベルノードに行を追加できる。このファイル内にある例にしたがえばよい。フォーマットは:

    * Topic: (relative-pathname).  Short description of topic.
    

Infoファイルをインストールしたいが必要な権限がない場合にはいくつかのオプションがあります:

  • 使用する前に実際にInfoファイルがインストールされている必要はない。infoコマンドにプレフィクス引数を使用して、ミニバッファーでInfoファイルの名前を指定できる。これによりそのInfoファイル内の‘Top’という名前のノードに移動する。たとえばホームディレクトリーにあるinfo-fileという名前のInfoファイルを閲覧するには、以下のようにタイプできる:
    C-u C-h i ~/info-file RET
    

    かわりにファイルの名前を以下のようにカッコ内にタイプして(Infoモードでg押下により呼び出される)Info-goto-nodeコマンドにファイル名を与えることができる。

    C-h i g (~/info-file) RET
    
  • 自分用のInfoディレクトリーを作成できる。変数Info-default-directory-listの値にパス名を追加することによってEmacsにInfoディレクトリーの場所を伝えることができる。たとえばホームディレクトリーにあるInfoという名前のサブディレクトリーを個人用のInfoディレクトリーとして使用するには以下を.emacsファイルに追加すればよい:
    (add-to-list 'Info-default-directory-list "~/Info")
    

    このディレクトリーにはdirという名前のトップレベルInfoファイルが必要になるだろう。これはそのディレクトリーにあるInfoファイルのエントリーだけをリストする点を除き、システムのdirがもつすべてをもつ。(偶然にも)このディレクトリー内のすべてのファイルが他のdirファイルから参照されていれば、これは必要ないかもしれない。Info-default-directory-list内のすべてのdirファイルのノードリストはInfoシステムによってマージされる。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.6 Texinfoファイルをプリントするには?

Infoファイルから見栄えの良いプリント出力は得られません。マニュアルのプリント用には、依然としてオリジナルのTexinfoソースファイルが不可欠です。

システムにTeXがインストールされていれば以下のステップを行います:

  1. Texinfoファイルの先頭の行が以下のようになっていることを確認:
    \input texinfo
    

    texinfo’をtexinfo.texファイルのフルパスに変更(またはカレントディレクトリーにコピーまたはリンク)する必要があるかもしれない。これはEmacsに同梱されているdoc/misc/texinfo.texである。

  2. texi2dvi texinfo-sourceとタイプする。ここでtexinfo-sourceはプリントしたコピーを生成したいTexinfoソースファイル名。‘texi2dvi’スクリプトはGNU Texinfoディストリビューションの一部である。

    texi2pdf’の場合には、かわりにPDFファイルを生成する。

  3. あなたのサイトでDVIファイルを通常プリントするのと同じ方法でDVIファイルtexinfo-source.dviをプリントする。たとえばPostScriptプリンターをもっていれば、そのプリンターでDVIファイルをプリントするためにdvipsプログラムを実行する。

より一般的な手順については最新のTexinfoパッケージを調べてください(Texinfoドキュメントをインストールするには?を参照)。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7 Emacsを使わずにInfoファイルを閲覧できる?

はい。以下はいくつかの候補プログラムです:


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8 利用できるEmacs情報のファイルは?

これはよくある質問ではありませんが、そうあるべきなのです! あなたに読んでもらうために、Emacsおよび関連するGNUプロジェクトの様相に関する様々な情報ファイルが利用可能です。

以下のファイル(やその他のファイルも)はEmacsディストリビューション(どこにあるか判らなければsrc/config.hsite-lisp/default.el等は何なのか?を参照)のetcディレクトリー内にあります。これらのファイルの多くはEmacsの‘Help’メニュー、あるいはC-h ? (M-x help-for-help)とタイプして利用することができます。

COPYING

GNU 一般公衆利用許諾書(GNU GENERAL PUBLIC LICENSE)

DISTRIB

Emacsの可用性に関する情報

MACHINES

様々なマシンおよびシステムにおけるEmacsの状況

NEWS

Emacsのニュース、ユーザーの目に見える最新の変更履歴

GNU’s Bulletinの未解決問題を含むより詳細なGNU情報については

https://www.gnu.org/bulletins/bulletins.html、および

http://www.cs.pdx.edu/~trent/gnu/gnu.htmlを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9 Emacsのインストールでどこに助けを求めれば?

インストールにおける基本的なヒントについてはEmacsをインストールするには?、インストールに何か問題がある場合にはEmacsのビルドでトラブルに逢ったらどうすれば?を参照してください。

The GNU Service directoryにはEmacsやその他のGNUソフトウェアのインストールや使用において有償による手助けを提案する企業や個人が一覧されています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.10 このFAQの最新版はどこで入手できる?

Emacs FAQはInfo形式としてEmacsに同梱されています。任意のEmacsフレームトップにあるEmacsメニューバーの‘Help’メニューから‘Emacs FAQ’オプションを選択、あるいはC-h C-f (M-x view-emacs-FAQ)とタイプしてこれを読むことができます。開発版の最新バージョンはEmacsの開発用レポジトリから利用できます(Emacsの最新バージョンとは?を参照)。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4 Emacsの状況について

このチャプターでは最新バージョンの状況も含めたEmacsに関する基本情報を提供します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 “Emacs”という名前の由良は?

Emacsは元々はEditor MACroSの略語でした。RMSは“その時点ではITS上の略語としてEは使用されていなかったのでEmacsという名前を採用した”と述べています。最初のEmacsは1976年にMITにおいてRMSがPDP-10上のITS (the Incompatible Timesharing System)のエディターTECO (Text Editor and COrrector, originally Tape Editor and COrrector)のために記述したマクロのセットでした。RMSはすでにTECOを再プログラム可能な“リアルタイム”のフルスクリーンモードに拡張済みでした。Emacsは多くの異なるTECOコマンドセットとキーバインディングを統合するプロジェクトとして、MITにおいてGuy Steeleによって開始されて、RMSによって完成されました。

TECOのコードは行がノイズのように見えると多くの人が言っています。これはnews:alt.lang.tecoで読むことができます。誰かがTECO実装をEmacs Lispで記述しました(これを見つけるにはEmacsに同梱されていないEmacs Lispパッケージはどこで入手できるのか?を参照)。Emacsの内部でオリジナルのTECOを実行するのは興味深いプロジェクトになるでしょう。

Emacsという名前をもつ理由としてそれほど深刻ではない候補についてはファイルetc/JOKESを調べてください(src/config.hsite-lisp/default.el等は何なのか?を参照)。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.2 Emacsの最新バージョンとは?

Emacs 27.2はこれが記述されたカレントのバージョンです。2つのコンポーネントからなるバージョンナンバーは、リリースバージョンであることを表します(例: ‘24.5’)。3つのコンポーネントからなるバージョンナンバーは開発バージョンを表します(たとえば‘28.0.50’、いずれ‘28.1’となる)。

Emacsは活動的な開発の下にありSavannahでホスティングされています。そこで示された手順にしたがってプロジェクトレポジトリをクローンしてください。

リリース前にはEmacsにたいして多くの変更が施されるので、開発版のバージョンナンバーに特別な意味はありません。開発レポジトリから取得した日付を参考にするほうが良いでしょう。開発版は通常は日常的の使用にたいしてかなり堅牢ですが、最新機能より安定性の方が重要ならリリース版に固執した方が良いかもしれません。

以降のセクションでは最近のEmacsのリリースにおける主要な新機能を一覧にしました。Emacsのあるバージョンにおける変更の完全な詳細についてはC-h C-nとタイプしてください。Emacs 22以降では古いバージョンにおいて何が新機能かうぃ読むために、このコマンドにプレフィクス引数を与えることができます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.3 Emacs 27は何が違う?

  • ネイティブでは大き過ぎるサイズの整数をサポートするためにGMPライブラリー(GNU Multiple Precision libraryl: GNU多倍長整数ライブラリー)を使用するようになった。ネイティブでサポートされる整数は“fixnums”、それより大きい整数は“bignum”とされる。bignumで意味をもつすべての数学、比較、および論理(“ビット”とも呼ばれる)の演算操作はfixnumとbignumの両方をサポートするようになった。
  • デフォルトのシェーピングエンジン(shaping engine: 整形エンジン)としてEmacsはHarfBuzzを使用するようになった。
  • json.elによる高速なJSON解析のネイティブサポート。
  • Cairoによる描画が実験的機能ではなくなった。
  • Emacsがunexecではなく“portable dumper”を使用するようになった。これは現代的なシステムのメモリー割り当てにたいする互換性を向上して、とりわけ現代的なオペレーティングシステムのほとんどが使用しているASLR(Address Space Layout Randomization: アドレス空間配置のランダム化)のサポートが向上した。
  • initファイルにたいしてEmacsがXDG規約を使用可能になった。
  • 早期initファイル(early init file)を使用してEmacsを設定できるようになった。これの主要目的は正規initファイル(regular init file)のロード前に発生するパッケージシステムの初期化にたいして、その方法のカスタマイズを可能にすることである。
  • タブ(タブバーとタブライン)にたいするビルトインサポート。
  • ImageMagickを必要としないイメージのリサイズおよびローテートのサポート。

Emacs 27における変更の完全なリストは、EmacsのNEWSファイル (C-h n)を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.4 Emacs 26は何が違う?

  • EmacsがLispスレッドによる限定された並列処理を提供するようになった。
  • Emacsでのsystemdサポート。新たなコマンドラインオプション--fg-daemonはこのサポートの一部であり、forkせずにフォアグラウンドで--daemonと同じように実行される。
  • 24ビットトゥルーカラーの機能を提供するテキスト端末上でのEmacsによる24ビットトゥルーカラーサポート。TTYで色や構文ハイライトするには?を参照のこと。
  • X上のEmacsがほとんどの状況においてディスプレーのちらつきをなくすダブルバッファリングをサポートするようになった。
  • マウスやタッチパッドを使用してEmacsディスプレーを水平方向にスクロールできるようになった。
  • Emacsの表示においてdisplay-line-numbers-modeコマンドを通じた行番号表示のためのオプション機能が含まれるようになった。この機能はlinumのようなパッケージが提案するものと等価な表示をより高速に行い、更に相対的行番号など多くのオプション機能も提供する。
  • 行の切り詰め時にウィンドウディスプレーの自動的な水平スクロールが、Emacsがカーソルを表示するカレント行でのみオプションで有効にできるようになった。このモードでは他のすべてのウィンドウ行にたいして、表示領域外にある文字を表示するためのスクロールは行われない。
  • トルコ語とギリシャ語のスクリプトの特別ケースを大文字小文字変換が配慮するようになった。
  • EnchantサポートがEmacsのスペルチェックコマンドの一部となった。
  • TrampがGoogle Driveファイルシステムをサポートするようになった。
  • ビルドされたマシンの詳細を省いてEmacsをビルドできるようになり、これにより再現可能なビルドの生成が容易になった。
  • Enriched Textモードに関するセキュリティの脆弱性が削除された。以前のEnrichedモードではテキストの一部としてdisplayプロパティの保存ができた。これらのプロパティは任意のLispコードの評価をサポートしており、外部ソースからEnrichedテキストを受け取るEmacsユーザーを脆弱性に晒していた。Enriched Textモードがデコードしたdisplayプロパティ内の任意のLispフォームの実行はデフォルトで無効になった。
  • Emacs 26.2には最新のUnicode標準バージョン11.0.0.からインポートされたデータファイルが同梱される。

Emacs 26における変更の完全なリストは、EmacsのNEWSファイル (C-h n)を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5 Emacs 25は何が違う?

  • gtk3とwebkitgtk3がインストールされていればEmacsがバッファー内にネイティブウィジェットを埋め込めるようになった。たとえば埋め込みのwebkitブラウザウィンドウにアクセスするにはM-x xwidget-webkit-browse-urlとタイプすればよい。
  • 共有ライブラリーとしてコンパイルされた外部モジュールをEmacsが動的にロード可能になった。
  • いくつかの一般的な文字にたいしする略記がC-x 8に新規で追加された。略記のリストはC-x 8 C-hとタイプする。
  • 新しいマイナーモードglobal-eldoc-modeがデフォルトで有効になり、ポイント位置にあるEmacs Lispフォームの引数をエコーエリアまたはモードラインに表示するようになった。
  • “bracketed paste mode”をサポートするテキスト端末では、Emacsがそのモードをデフォルトで使用するようになった。このモードではEmacsはペーストされたテキストとユーザーがタイプしたテキストを区別できる。
  • Emacs 25には最新のUnicode標準バージョン9.0.0.からインポートされたデータファイルが同梱される。
  • 双方向編集のサポートは、最新のUnicode標準バージョン9.0.0.が要請するすべての機能を含むように更新された。
  • 検索コマンドがマッチでの文字フォールディング(folding: 折り畳み)を行うようになった。これはcaseフォールディング(大文字小文字を無視)と似ているが、case(大文字小文字)の違いを無視するのではなく、ダイアクリティカルマークを無視して二重引用符の様々な変種をマッチする等、類似した文字間のより広範な区別を無視する。
  • EmacsウェブブラウザEWWが可変ピッチフォントをレンダリングするように拡張され、それ以外にも新たな機能が加わった。
  • libxml2とともにEmacsをビルドした場合、あるいはLynxブラウザがインストールされていれば、RmailがHTMLメールメッセージをレンダリングするようになった。
  • VCがBzr、Git、Hg用に実装されたpushコマンドを基本的にサポートするようになった。
  • Hide-IfDefモードがマクロ、マクロ引数展開、対話的マクロ評価、#defineされたシンボルのスキャンにおいてすべてのC/C++式をサポートするようになった。
  • 新パッケージXrefがEtagsのフロントエンドとUIを置き換えた。Xrefは関数、マクロ、データ構造等の定義の検索や移動、そして定義に移動する前の場所に戻るための汎用フレームワークおよび新たなコマンドを提供する。バックエンドの1つとしてTAGSテーブルを読み込むetags.elのコードは依然として使用しているものの、Etagsコマンドの多くは置き換えられるか廃止された。結果としてポピュラーなキーバインディングM-.およびM-,はXrefコマンドを呼び出すように変更された。
  • 新パッケージProjectはプロジェクトを取り扱うたねの汎用インフラストラクチャを提供する。
  • Emacsはツールキットのツールバーを提供するいくつかのプラットフォーム、すなわちGtk+、Lucid、Motif、Windowsにおいて水平スクロールバーを描画できるようになった。

Emacs 25における変更の完全なリストは、EmacsのNEWSファイル (C-h n)を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.6 Emacs 24は何が違う?

  • Emacsにパッケージマネージャーが含まれるようになった。これを開始するにはM-x list-packagesとタイプする。これを使用すれば更に多くのLispパッケージをダウンロードして自動でインストールできる。
  • Emacs Lispがファイル単位にもとづくレキシカルバインディングをサポートするようになった。レキシカルバインディング(lexical binding)では変数参照はバインディング構文内にテキスト的に配置されていなければならない。これはローカルなテキストスコープ外部で定義された変数をプログラムが参照可能なダイナミックバインディング(dynamic binding)とは対照的である。Lispファイルはファイルコンテンツがレキシカルバインディング和使用していると解釈するよう示すために、ローカル変数セッティングlexical-binding: tを使用できる。詳細についてはEmacs Lispリファレンスマニュアルを参照のこと。
  • 英語のような自然言語のいくつかは左から右へと記述される。それ以外のアラビア語などは右から左に記述される。Emacsはこれらの形式が混交した、いわゆる“双方向テキスト(bidirectional text)”をサポートするようになった。
  • テキスト選択の処理が改善されて、外部クリップボードとの統合性が向上した。
  • 新たなコマンドcustomize-themesによってEmacsの外観の変更が容易になった。
  • GTK+ 3ツールキットとともにEmacsをコンパイルできるようになった。
  • コンパイル時に新たに複数の外部ライブラリーを含めることをサポートする。
    • 従来の“Unixスタイル”より複雑なファイルアクセスコントロールを提供するLinuxカーネルの機能であるSELinux(“Security-Enhanced Linux”)
    • ImageMagickディスプレーライブラリー。これによりEmacsでより多くのイメージ形式を表示でき、ローテーションのような変換も行うことができるようになる。
    • 安全なネットワーク通信のためのGnuTLSライブラリー。メールサーバーがサポートしていれば、EmacsはEメールにたいしてこれを透過的に使用する。
    • XML構造解析のためのlibxml2ライブラリー。
  • ウィンドウおよびバッファー表示の処理における柔軟性の向上。

いつも通り詳細についてはNEWSファイルを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7 Emacs 23は何が違う?

  • Emacsにfreetype、fontconfigを含む複数のフォントバックエンドを使用可能なフォントコードが新たに追加された。EmacsはアンチエイリアスにXftライブラリー、複雑なテキストレイアウトとテキストシェーピングにotfやm17nのライブラリーを使用できる。
  • Emacs文字セットがUnicodeのスーパーセットになった。新たに複数の言語環境が追加された。
  • Emacsが同一セッションでXディスプレーとttyの両方を使用できるようになった(‘multi-tty’)。
  • Emacsをバックグラウンドでデーモンとして開始できるようになった。
  • 新たにEmacsのNeXTstepポートが登場した。これはGNUstepおよび(Cocoaライブラリーを介して)Mac OS Xをサポートする。Emacs 22においてMac OS XをサポートしていたEmacsのCarbonポートは削除された。
  • ファイルローカル変数と同様の方法でディレクトリーローカル変数を定義できるようになった。
  • Transient Markモードがデフォルトでオンになった。

他にもシリアルポートアクセスのサポート、D-Busバインディング、行移動における新たなVisual Lineモード、補完の改善、PDFやPostScript、DVIを閲覧するための新モード(‘DocView’)、(XMLドキュメント編集用の)nXMLモード、新しいバージョンコントロールシステム用にVCを更新する等の変更が含まれます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.8 Emacs 22は何が違う?

  • GTK+ウィジェットとともにEmacsをビルドできるようになり、X上でのドラッグアンドドロップ操作がサポートされた。
  • Emacs 22ではS390およびx86-64マシン上のGNU/Linuxシステム、Mac OS XおよびCygwinオペレーティングシステムにたいするサポートを提供する。
  • ネイティブのMS-WindowsおよびMac OS Xのビルドにイメージ、ツールバー、ツールチップの完全サポートが含められた。
  • Font Lockモード、Auto Compressionモード、File Name Shadowモードがデフォルトで有効になった。
  • バッファーの最大サイズが増加した。32ビットマシンのEmacs 23.1では256MB、Emacs 23.2以降は512MB。
  • mouse-2に加えてmouse-1でリンクをフォローできるようになった。
  • マウスホイールのサポートがデフォルトでオンになった。
  • ウィンドウフリンジがカスタマイズ可能になった。
  • 選択されたウィンドウのモードラインがハイライトされるようになった。
  • ミニバッファーのプロンプトは独自のフェイスで表示される。
  • abbrev定義を起動時に読み込む。
  • GrepモードがCompilationモードから切り離されて、新たにgrep特有のオプションおよびコマンドをもつようになった。
  • Emacsオリジナルのマクロシステムは、新たに多くのコマンドおよび機能、ファンクションキーF3とF4を使用するシンプルなインターフェイスを提供するKmacroパッケージに置き換えられた。マクロはマクロリングに格納されるとともに、対話的なデバッグと編集が可能になった。
  • GDBにたいする完全にグラフィカルなユーザーインターフェイスとしてGUD(Grand Unified Debugger)が使用できるようになった。これは伝統的な開発環境で目にする多くの機能を提供するとともに、ブレークポイントの操作、ウォッチポイントの追加、コールスタック表示等を容易にする。ブレークポイントはソースバッファー内に視覚的に示される。
  • Calc、TRAMP、URL、IDO、CUA、ERC、rcirc、Table、Image-Dired、SES、Ruler、Org、PGG、Flymake、Password、Printing、Reveal、wdired、t-mouse、longlines、savehist、Confモード、Pythonモード、DNSモードなど新たに多くのモードとパッケージがEmacsに含められた。
  • LeimはEmacsの一部となった。Unicodeサポートが更に改善されてbelarusian、bulgarian-bds、bulgarian-phonetic、chinese-sisheng、croatian、dutch、georgian、latin-alt-postfix、latin-postfix、latin-prefix、latvian-keyboard、lithuanian-numeric、lithuanian-keyboard、malayalam-inscript、rfc1345、russian-computer、sgml、slovenian、tamil-inscript、ucs、ukrainian-computer、vietnamese-telex、welshの入力メソッドが追加された。

    Belarusian、Bulgarian、Chinese-EUC-TW、Croatian、French、Georgian、Italian、Latin-6、Latin-7、Latvian、Lithuanian、Malayalam、Russian、Slovenian、Swedish、Tajik、Tamil、UTF-8、Ukrainian、Welsh、Windows-1255の言語環境が追加された。

  • これらに加えてEmacs 22にはEmacs Lispリファレンスマニュアル(Emacs Lispではどこでドキュメントを入手すれば?を参照)およびEmacs Lisp Introが含められた。

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.9 Emacs 21は何が違う?

Emacs 21ではディスプレーエンジンの徹底的な書き換えが行われました。新たなディスプレーエンジンは可変長フォント、イメージをサポートするとともに、サウンドをサポートするプラットフォームでのサウンド再生が可能になりました。結果としてウィンドウ化されたディスプレーで実行した際のEmacsの視覚的外観はより現代的なGUIプログラムを想起させるものとなり、3Dウィジェット(モードラインとスクロールバーで使用)、設定と拡張が可能なツールバー、ツールチップ(別名バルーンヘルプ)、その他が含められました。

これらに加えてEmacs 21ではテキストオンリーの端末でのフェイスがサポートされました。これはGNU/Linuxコンソールやxterm上でEmacsをemacs -nwで実行した際にカラー表示されることを意味しています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.10 Emacs 20は何が違う?

Emacsのバージョン18から19への変更はより劇的なものでした。一般的なユーザーのほとんどにとってもウィンドウシステムにおけるフレーム、フェイス、カラーの導入は明白な変更でした。

Emacsのバージョン19と20の間にも同様に変更はあるものの、その多くは軽微であるか気付くのが難しいものでした。この変更の中には非ラテン文字を使用する言語用のMULEと同一ドキュメント内での複数言語の混合、Lispを使用せずに変数を変更する“Customize”機能、Macintosh、Microsoft、Unixプラットフォームにおけるファイルの自動変換が含まれます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5 よくある要望


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1 .emacsファイルを正しくセットアップするには?

Init File in The GNU Emacs Manualを参照してください。

一般的にEmacsの新規ユーザーは.emacsファイルを与えられるべきではありません。なぜならこれによる非標準的な振る舞いが混乱を招くからです。その後に彼らはなぜEmacsがドキュメント通りに振る舞わないか尋ねる質問をthe help-gnu-emacs mailing listに送信するのです。

EmacsにはCustomize機能が含まれています(Customizeを使い始めるには?を参照)。これによってEmacs Lispに親しみのないユーザーはLispコードよりもメニューを使い、比較的判りやすい方法で.emacsファイルを編集できます。

Customizeは確かにEmacsの設定を容易にするかもしれませんが、Emacs Lispを習得して.emacsを直接編集するために少し時間を割くことを検討してみてください。頻繁に求められる基本的なタスクを処理することに興味があるユーザーには、シンプルな設定オプションがInit File in The GNU Emacs Manualに完全に記述されています。

ユーザーがどこで自分の.emacsファイルを見つけられるか判らない場合があります。Emacsから~/.emacsとしてファイルをvisitすることによって、正しいファイルが見つかるでしょう。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 Customizeを使い始めるには?

Customizeの主となるエントリーポイントはM-x customize RETです。このコマンドにより利用可能なすべてのCustomizeグループを一覧するバッファーへと導かれます。そこからカスタマイズ可能なすべてのオプションおよびフェイスにアクセスして、それらの値の変更とinitファイルへの保存ができます。Easy Customization in The GNU Emacs Manualを参照してください。

(たとえば“shell”のように)あらかじめグループの名前が判っていればM-x customize-group RETを使用してください。

オプションを1つカスタマイズしたければ、M-x customize-option RETを使用します。このコマンドは補完付きでカスタマイズするオプション名の入力を求めます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3 TTYで色や構文ハイライトするには?

Emacs 21.1以降では非ウィンドウ化モード(UnixおよびGNU/Linuxテキストオンリー端末やコンソール、またはXやMS-Windowsで‘emacs -nw’を呼び出した場合)でカラーとフェイスがサポートされています(MS-DOSポートではEmacs 19.29以降でカラーとフェイスがサポートされている)。Emacsは起動時に自動的にカラーサポートを検出して、利用できるようならカラーを使用します。あなたの端末がカラーをサポートしていると思えるのにEmacsがカラーを使用しない場合には、あなたのディスプレータイプにたいするカラー関連能力についてtermcapエントリーをチェックしてください。

コマンドM-x list-colors-displayはカレントディスプレーについてEmacsが関知する全カラーを展覧するウィンドウをポップアップします。

バージョン22.1以降ではシンタックスハイライトがデフォルトでオンです。

Emacs 26.1以降は端末(訳注: 端末=terminalはtermcapのterm)でのダイレクトカラーモードをサポートしています。EmacsがTerminfoで‘setb24’および‘setf24’のケイパビリティ(訳注: capabilityはtermcapのcap)を見つけたら24ビットダイレクトカラーモードを使用します。ケイパビリティ文字列は、引数として1つの24ビットピクセル値を取り、24ビットカラーを端末に送信するために使用できる文字列にピクセルを変換することが期待されます。

標準の端末定義はこれらのケイパビリティをサポートせず、したがってカスタム定義が必要になります。

$ cat terminfo-custom.src

xterm-emacs|xterm with 24-bit direct color mode for Emacs,
  use=xterm-256color,
  setb24=\E[48\:2\:\:%p1%{65536}%/%d\:%p1%{256}%/%{255}%&\
     %d\:%p1%{255}%&%dm,
  setf24=\E[38\:2\:\:%p1%{65536}%/%d\:%p1%{256}%/%{255}%&\
     %d\:%p1%{255}%&%dm,

$ tic -x -o ~/.terminfo terminfo-custom.src

$ TERM=xterm-emacs emacs -nw

Emacs 27.1以降では24ビットダイレクトカラーモードの検出にたいする、Terminfoの‘RGB’ケイパビリティをサポートしています。複数の標準的な端末定義がこのケイパビリティをサポートしています。

$ TERM=xterm-direct infocmp | grep seta[bf]

  setab=\E[%?%p1%{8}%<%t4%p1%d%e48\:2\:\:%p1%{65536}%/\
     %d\:%p1%{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,
  setaf=\E[%?%p1%{8}%<%t3%p1%d%e38\:2\:\:%p1%{65536}%/\
     %d\:%p1%{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,

$ TERM=xterm-direct emacs -nw

あなたの端末にXTermとの互換性がなければ、別のTERM定義を使う必要があるかもしれません。名前に‘direct’が含まれるすべての端末が候補になり得ます。それらのうちどれがシステムにインストールされているか調べるためにtoeコマンドを使用できます:

$ toe | grep '\-direct'

konsole-direct  konsole with direct-color indexing
vte-direct      vte with direct-color indexing
st-direct       st with direct-color indexing
xterm-direct2   xterm with direct-color indexing (old)
xterm-direct    xterm with direct-color indexing

RGB’ケイパビリティをもつ端末は、ダイレクトカラーモードを認識しないアプリケーションにたいする後方互換性を保守するために、ピクセル#000001から#000007をインデックス付けされたカラーとして扱います。したがってもっとも暗い青い濃淡は利用できないかもしれません。これが問題となるようなら、‘setb24’と‘setf24’のカスタム端末定義を使用することは常に可能です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.4 .emacsファイルをデバッグするには?

コマンドラインオプション‘-debug-init’でEmacsを開始してください。これは.emacsファイルを評価する前にEmacs Lispデバッガを有効にして、何かうまく行かなければあなたをデバッガ内へと導きます。trace-backバッファーの上端行はエラーメッセージ、2行目か3行目には問題を引き起こした.emacsファイルのLispコードが表示されるでしょう。

.emacsファイル内の関数や引数の終端にカーソルを移動してC-x C-e (M-x eval-last-sexp)をタイプすれば、関数や関数の引数を個別に評価することもできます。

セットまたは使用を試みている変数の値をチェックするにはC-h v (M-x describe-variable)を使用できます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.5 Emacsに現在の行(や列)の番号を表示させるには?

デフォルトではEmacsはポイント位置のカレント行番号をモードラインに表示します。コマンドM-x line-number-mode、または変数line-number-modeでこの機能のオンオフを切り替えることができます。バッファーのバイトサイズが変数line-number-display-limitの値より大きければ、Emacsは行番号を表示しないことに注意してください。

M-x column-number-mode、または以下のフォーム

(setq column-number-mode t)

.emacsファイルに記述することにより、同じようにカレント列番号を表示できます。この機能はデフォルトではオフです。

変数mode-line-format内のフォーマット指定子"%c"は、モードラインにカレント列の値を挿入します。この変数のセット、および使用方法についての詳細はmode-line-formatのドキュメントを参照してください(C-h v mode-line-format RETを使用する)。

display-line-numbers’パッケージ(Emacsのバージョン26.1で追加)は‘vi’の“set number”機能のように、各行の前のテキストエリアに行番号を表示します。このオプション表示をアクティブにするにはバッファーローカル変数display-line-numbersをカスタマイズします。かわりにマイナーモードdisplay-line-numbers-modeやグローバル版のglobal-display-line-numbers-modeを使うこともできます。これらのモード使用時にはdisplay-line-numbersを使用するときと同じ値でdisplay-line-numbers-typeをカスタマイズしてください。

linum’パッケージ(バージョン23.1以降のEmacsに同梱)もありますが今後廃止されます。ユーザーおよび開発者には、かわりに‘display-line-numbers’の使用をお勧めします。(Emacsには同梱されていない)パッケージ‘setnu’と‘wb-line-number’もこの機能を実装しています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.6 現在のファイル名をタイトルバーに含めるには?

Emacsフレームのタイトルバーのコンテンツは、変数mode-line-formatと同じ構造をもつ変数frame-title-formatによって制御されます(これらの変数について情報を得るにはC-h vまたはM-x describe-variableを使用する)。

デフォルトではフレームのタイトルバーには、1つのフレームしか存在しない場合を除き、カレントでvisitされているバッファーの名前が表示されます。フレームが1つの場合には、タイトルバーにEmacsを呼び出したときの名前、およびEmacsを呼び出したマシン名が含まれます。これはframe-title-formatに以下をデフォルト値としてセットすることにより行われます:

(multiple-frames "%b" ("" invocation-name "@" (system-name)))

存在するフレームの個数に関わらずフレームのタイトルバーにバッファー名が含まれるように挙動を変更するには、以下を.emacsに含めてください:

(setq frame-title-format "%b")

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.7 モードmymodeでデフォルトでabbrevをオンにするには?

Abbrevモードは略語をタイプするとそれを展開します。特定のバッファーでこれをオンにするにはM-x abbrev-modeを使用します。デフォルトですべてのバッファーでオンにするには、以下を.emacsファイルに記述してください:

(setq-default abbrev-mode t)

特定のモードでオンにするには以下を使用してください:

(add-hook 'mymode-mode-hook
          (lambda ()
           (setq abbrev-mode t)))

Emacsのバージョンが22.1より古ければ、以下も使う必要があるでしょう:

(condition-case ()
   (quietly-read-abbrev-file)
  (file-error nil))

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.8 特定のファイルに特定のモードをEmacsに使用させるには?

名前が拡張子.barで終わるファイルすべてにたいして特定のモードfooを使用したければ、以下でこれを行うことができるでしょう:

(add-to-list 'auto-mode-alist '("\\.bar\\'" . foo-mode))

またはかわりにモードfooで編集したい任意のファイルの1行目のどこか(1行目の先頭が‘#!’なら2行目)に以下を記述します:

-*- foo -*-

変数interpreter-mode-alistはインタープリター(shellやpythonなど)に解釈されるスクリプトをロードする際にどのモードを使用するかを指定します。Emacsはスクリプトの1行目を調べて、使用されるインタープリターを判断します。詳細についてはinterpreter-mode-alist上でC-h v (またはM-x describe-variable)を使用して調べてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.9 ハイライトされたテキストをタイプしたテキストで置き換えるには?

以下のLispフォームを.emacsファイルに記述することにより自動的に開始できるdelete-selection-modeを使用します。

(delete-selection-mode 1)

delete-selection-modeのドキュメント文字列(M-x describe-function RET delete-selection-mode RETを使用して読むことができる)によると:

Delete Selectionモードが有効な場合には選択がアクティブのときにテキストをタイプするとテキストで選択を置き換える。それ以外なら選択の有無に関わらずタイプしたテキストはポイント位置に挿入される。

このモードによりDELを押下してハイライトされているリージョンを削除(killではない)することもできます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.10 検索や置換の際にEmacsによる大文字小文字の区別を制御するには?

変数case-fold-searchの値は検索がcase(大文字小文字)を区別するかどうかを決定します:

(setq case-fold-search nil) ; caseを区別
(setq case-fold-search t)   ; 検索はcaseを区別しない

同じように置換では変数case-replaceが置換においてcaseを維持するかどうかを決定します。

isearchではM-cで自由にcaseの区別を切り替えることもできます。

あるメジャーモードにたいしてのみcaseの区別を変更するにはメジャーモードのフックを使用します。たとえば:

(add-hook 'foo-mode-hook
          (lambda ()
           (setq case-fold-search nil)))

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.11 プリント不可文字(8ビット文字やコントロール文字)の検索、削除、置換を行うには?

たとえばバッファーには‘\237’のように出現する単一文字はC-s C-q 2 3 7とタイプして検索できます。プリントできないすべての文字を検索するには正規表現(regexp)で行うのが最良です。プリント不可文字にたいするregexpは、プリント可能文字にたいする補集合を使用するのがもっとも簡単です。

  • プリント可能文字にたいするregexp: ‘[\t\n\r\f -~]
  • プリント不可文字にたいするregexp: ‘[^\t\n\r\f -~]

isearch-forward-regexpre-search-forwardにたいする対話的な引数としてこれらのスペシャル文字をタイプするにはC-qを使う必要があります(‘\t’、‘\n’、‘\r’、‘\f’はそれぞれTABLFDRETC-lを意味する)。したがってre-search-forwardを使用してプリント不可文字を検索するには:

M-x re-search-forward RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET

isearch-forward-regexpを使用する場合は:

C-M-s [^ TAB LFD C-q RET C-q C-l SPC -~]

すべてのプリント不可文字を削除するには単にreplace-regexpを使用します:

M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET RET

置換は上で述べたのと似ています。すべてのプリント不可文字をコロンで置き換えるには以下を使用します:

M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET : RET


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.12 isearchやquery-replaceで改行を入力するには?

C-q C-jを使用してください。詳細についてはSpecial Input for Incremental Search in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.13 killリングから検索文字列にテキストをコピーするには?

M-yを使用します。Isearch Yank in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.14 自分用にEmacsに単語を折り返させるには?

M-x auto-fill-modeとタイプしてauto-fill-modeを有効にして使用してください。デフォルトの最大行幅は70で、これは変数fill-columnにより決定されます。これを自動でオンに切り替える方法についてはデフォルトでauto-fill-modeをオンにするには?を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.15 デフォルトでauto-fill-modeをオンにするには?

1つのバッファーだけでauto-fill-modeをオンに切り替えるにはM-x auto-fill-modeを使用します。

特定のモードのすべてのバッファーでオンに切り替えるには、そのモードにたいするフックを使用しなければなりません。たとえばテキストバッファーのすべてでauto-fillモードをオンに切り替えるには、以下を.emacsファイルサイ追加してください:

(add-hook 'text-mode-hook 'turn-on-auto-fill)

すべてのメジャーモードでauto-fillモードをオンにするには以下を行います:

(setq-default auto-fill-function 'do-auto-fill)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.16 load-pathを変更するには?

一般的にはload-pathへは追加のみにするべきです。以下のようにしてディレクトリー/dir/subdirをロードパスに追加できます:

(add-to-list 'load-path "/dir/subdir/")

ホームディレクトリーにたいして相対的にこれを行うには:

(add-to-list 'load-path "~/mysubdir/")

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.17 別ウィンドウですでに実行中のEmacsを使用するには?

Emacsに同梱されているemacsclientは新たなEmacsを開始せずに、すでに実行中のEmacsを使用してファイルを編集するためのものです。これはすでに実行中のEmacsにリクエストを送信することによって行われます。実行中のEmacsはリクエストに応えなければなりません。

  • セットアップ:

    emacsclient’が機能するにはEmacsがserver-start関数を実行済みでなければならない。これはコマンドラインオプション:

    emacs -f server-start
    

    または.emacsからserver-startを呼び出すことによって行うことができる:

    (if (some conditions are met) (server-start))
    

    ニュースリーダーやメールリーダーなどが‘emacsclient’を呼び出すようにするには、環境変数EDITOR (VISUALのときもあり)に値‘emacsclient’を設定してみればよい。‘emacsclient’プログラムのかわりにプログラムのフルパス名を指定する必要があるかもしれない。たとえば:

    # cshの場合:
    setenv EDITOR emacsclient
    
    # フルパス名を使用
    setenv EDITOR /usr/local/emacs/etc/emacsclient
    
    # shの場合:
    EDITOR=emacsclient ; export EDITOR
    
  • 通常の使い方:

    emacsclient’を実行するとソケットに接続してコマンドラインオプションをEmacsに渡す。そしてEmacsは次の機会に指定されたファイルをvisitする(Emacsで行うように行番号を指定できる)。ユーザーは手動でEmacsに切り替える必要がある。ユーザーがファイルの編集を終えたらC-x # (またはM-x server-edit)とタイプしてそれを示すことができる。emacsclientに要求されたバッファーが別にある場合にはEmacsはそのバッファーに切り替えるだろう。それ以外の場合にはemacsclientはexitして呼び出し元が継続できるようにシグナルを送る。

詳細についてはEmacs Server in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.18 わたしのコンパイラーの変なエラーメッセージをEmacsに認識させるには?

compilation-error-regexp-alist変数をカスタマイズしてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.19 switchのインデントを変更するには?

以下のようにswitchステートメントをインデントしたいと思う人は大勢います:

f()
{
  switch(x) {
    case A:
      x1;
      break;
    case B:
      x2;
      break;
    default:
      x3;
  }
}

これを行うには以下を.emacsファイルに追加してください:

(c-set-offset 'case-label '+)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.20 C、C++、Javaのバッファーのインデントをカスタマイズするには?

Emacsのcc-modeはインデントスタイルのカスタマイズ用に対話的な手順を提供しています。これはEmacsディストリビューションに同梱されているCC Modeマニュアルに完全な説明があります。Customization Indentation in The CC Mode Manualを参照してください。以下はそれの短い要約です:

  1. 気に入らないインデントの最初の行の先頭に移動してC-c C-oとタイプする。Emacsが構文シンボル(syntactic symbol)の入力を求めるので、デフォルトを承諾するためにRETをタイプする。
  2. Emacsがその構文シンボルのオフセットの入力を求める。その際にはカッコ内にデフォルト(現在の定義)が表示される。ここで以下のいずれかを選択できる:
    0

    余計なインデントなし。

    +

    基本オフセット1つ分インデントを加える。

    -

    基本オフセット1つ分インデントを戻す。

    ++

    基本オフセット2つ分インデントを加える。

    --

    基本オフセット2つ分インデントを戻す。

    *

    基本オフセットの半分インデントを加える。

    /

    基本オフセットの半分インデントを戻す。

  3. これらのシンボルのいずれかを選んだ後にC-c C-qをタイプして、指定したインデントに行またはブロックを再インデントする。
  4. 結果が気に入らなければステップ1に戻る。そうでなければ以下の行を.emacsに追加する:
    (c-set-offset 'syntactic-symbol offset)
    

    ここでsyntactic-symbolは行頭でC-c C-oをタイプした際にEmacsが表示した名前、offsetは上記のインデントシンボル(+/0等)のいずれかのうち対話的手順の間に選択したシンボル。

  5. インデントが気に入らない次の行へ移動してこれらの手順を繰り返す。

以下のように(c-set-offset ...)によるカスタマイズ結果すべてをCモードのフック内に記述することをお勧めします:

(defun my-c-mode-hook ()
  (c-set-offset ...)
  (c-set-offset ...))
(add-hook 'c-mode-hook 'my-c-mode-hook)

cc-modeをロードしていなければc-set-offsetは利用できないので.emacsには(require 'cc-mode)を記述する必要がありますが、c-mode-hookを使用すればこれを避けることができます。

c-mode-hookはCソースファイルの場合のみ実行されることに注意してください。C++にはc++-mode-hook、Javaソースにはjava-mode-hookを使う等してください。同一のカスタマイズが、cc-modeによってサポートされるすべての言語にたいして効力をもつようにしたければc-mode-common-hookを使用してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.21 Emacsに挿入ではなく“上書き”させるには?

M-x overwrite-mode (マイナーモード)です。これはoverwrite-modeのオンオフを切り替えるので、もう一度M-x overwrite-modeとタイプすれば簡単にoverwrite-modeからexitできます。

いくつかのシステムではInsertoverwrite-modeのオンオフが切り替わります。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.22 端末でEmacsのビープ音を止めるには?

Martin R. Frank(訳注: Texinfoファイルには"martin@cc.gatech.edu"とコメントされてました)は記しています:

可聴ベル(audible bell)のかわりに視覚的なベル(visible bell)を使うようにEmacs伝えて、その視覚的ベルには何もセットしません。

つまり(あなたがtermcapをもっていると仮定して)TERMCAP環境変数に以下を記述します:

... :vb=: ...

そして以下のLispフォームを評価してください:

(setq visible-bell t)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.23 XでEmacsを実行中にベル音量を下げるには?

Xウィンドウシステムではシェルコマンドxsetのより、すべてのプログラムでベルの音量および間隔を調節できます。

引数なしでxsetを呼び出すことによって、以下を含むいくつかの基本的な情報が生成されます:

usage:  xset [-display host:dpy] option ...
  To turn bell off:
      -b                b off               b 0
  To set bell volume, pitch and duration:
       b [vol [pitch [dur]]]          b on

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.24 新しい行を前の行に合わせて自動的にインデントするようEmacsに伝えるには?

このような振る舞いはEmacs 20以降では(Textモードでは)自動で行われます。Emacs 20.2のetc/NEWSファイルからの引用です:

** Textでパラグラフを分割するのは空行のみとなった。これによってAdaptive FillモードからTextモードやその他Textモードから派生した(Mailモードのような)モードが受ける恩恵を最大にすることが可能になる。TextモードでのTABによってindent-relativeコマンドが実行されるようになった。これによって実際に違いが生じるのは、インデントされたパラグラフを使用している場合だけである。

パラグラフ開始行の先頭にスペースが欲しければ、新しいモードのParagraph Indent Textモードを使用すること。

auto-fill-mode (デフォルトでauto-fill-modeをオンにするには?を参照)をオンに切り替えている場合には、フィルプレフィクス(fill prefix)として特定の文字シーケンスをすべての行のプレフィクスとするようEmacsに指示することができます。行頭でプレフィクスをタイプしてポイントをタイプしたプレフィクスの後に移動、それからC-x . (set-fill-prefix)とタイプしてフィルプレフィクスをセットします。それ以降はオートフィルが新たな行の先頭に自動的にフィルプレフィクスを配置するとともに、M-q (fill-paragraph)でパラグラフを再フィルする際にはすべてのフィルプレフィクスを保守するようになります。

異なるレベルのインデントをもつパラグラフがある場合には、新たなパラグラフに移動するたびにフィルプレフィクスを正しい値にセットすることが必要になるでしょう。これを取り扱うためのパッケージが多数存在します(Emacsに同梱されていないEmacs Lispパッケージはどこで入手できるのか?を参照)。手引きとして“fill”、および“indent”のキーワードを調べてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.25 自分が注目中のカッコに対応するカッコを表示するには?

.emacsファイルでshow-paren-modeを呼び出します。

(show-paren-mode 1)

任意のEmacsフレーム上端にあるEmacsメニューバーの‘Options’メニューからオプション‘Paren Match Highlighting’を選択してこのモードを有効にすることもできます。

このようなモードの代替となる手段として以下が含まれます:

  • あなたが右カッコ(または大カッコや角カッコ)に着目していたら、それを削除してから再度挿入する。Emacsは瞬時の間、マッチするカッコにカーソルを移動するだろう。
  • C-M-f (forward-sexp)およびC-M-b (backward-sexp)は釣り合いのとれたカッコを1セット分スキップするので、どのカッコがマッチするか確認できる(構文テーブルを修整して釣り合いのとれた大カッコおよび角カッコもスキップするよう洗練することも可能)。
  • 以下はviのように%キーでマッチするカッコを表示させるEmacs Lispコード。更にカーソルがカッコ上になければ通常通り単に%を挿入する。
    ;; 名無しの貢献者より
    
    (global-set-key "%" 'match-paren)
    
    (defun match-paren (arg)
      "カッコ上ならマッチするカッコへ移動、それ以外は%を挿入"
      (interactive "p")
      (cond ((looking-at "\\s(") (forward-list 1) (backward-char 1))
            ((looking-at "\\s)") (forward-char 1) (backward-list 1))
            (t (self-insert-command (or arg 1)))))
    

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.26 Cモードでコンパイラーが#ifdef処理後に残る行だけを表示するには?

M-x hide-ifdef-mode (マイナーモード)です。Emacsに同梱されているcpp.elも調べてみたいと思うかもしれません。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.27 できるだけ沢山コマンドを繰り返すには?

最後のコマンドを繰り返すにはrepeatコマンド(C-x z)を使用します。プレフィクス引数を前置すると、そのプレフィクスは繰り返すコマンドに適用されます。

引数を取得するためにミニバッファーを使用するコマンドは、C-x ESC ESC (repeat-complex-command)とタイプしても再呼び出しができます。repeat-complex-commandではM-pM-n (キーボードにあれば上矢印と下矢印も)をタイプすることにより、様々なcomplexコマンドすべてでタイプしたものを走査することができます。

一連のコマンドを繰り返すにはキーボードマクロを使用します。コマンドを呼び出すキーボードマクロの作成にはC-x (C-x )を使い、その後にC-x eとタイプします。Keyboard Macros in The GNU Emacs Manualを参照してください。

最後の挿入/削除を再実行するvi.コマンドが本当に欲しくて堪らなければ、それをサポートしているよう思われるVIPERというEmacsに同梱のviエミュレーションモードを使ってください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.28 有効なXリソース(.Xdefaults内の項目)は?

X Resources in The GNU Emacs Manualを参照してください。

EmacsがXツールキットとともにコンパイルされていると仮定して、メニューバーのリソース名を確認するためにeditres(X11R5以降)のようなリソースエディターを使用することもできます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.29 Emacs Lispのコード片を実行(“evaluate”)するには?

Emacs Lispのフォーム(form)を実行(Lispスラングではevaluate: 評価)するには:

  • Emacsを実行する際に毎回評価させたければ、ホームディレクトリーにある.emacsという名前のファイルにそれを記述する。これは“あなたの.emacsファイル”と呼ばれるものであり、あなたの個人的なカスタマイズがすべて含まれている。
  • *scratch*バッファーでフォームをタイプしてから、それの後でLFD (またはC-j)をタイプできる。フォームの評価結果はそのままバッファーに挿入される。
  • emacs-lisp-modeではC-M-xとタイプすることでポイントの前、または周辺にあるトップレベルのフォームを評価する。
  • 任意のバッファーにおいてC-x C-eとタイプするとポイント直前にあるLispフォームを評価して、その値をエコーエリアにプリントする。
  • M-:またはM-x eval-expressionとタイプすることによりミニバッファーでタイプしたLispフォームが、RET押下により1回評価される。
  • ファイル内のすべてのLispフォームをEmacsにすべて評価させるにはM-x load-fileを使用できる(これをLispから行うにはかわりに関数loadを使う)。

    関数load-libraryeval-regioneval-bufferrequireautoloadも有用。これらについての詳細はEmacs Lispではどこでドキュメントを入手すれば?を参照のこと。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.30 TAB文字の長さにたいするEmacsの解釈を変更するには?

変数tab-widthのデフォルト値をセットします。たとえば10文字ごとにTABストップをセットするには、.emacsファイルに以下を挿入してください:

(setq-default tab-width 10)

変数tab-widthと変数tab-stop-listを混同しないでください。前者はリテラルのTAB文字の表示に使用されます。一方後者は特定のモードにおいてTAB文字を押下した際にどの文字が挿入されるかを制御します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.31 各行の先頭に<何らかのテキスト>を挿入するには?

これをバッファー全体にたいして行う場合にはM-< M-x replace-regexp RET ^ RET your text RETとタイプします。

リージョンにたいして行う場合にはstring-insert-rectangleを使用します。プレフィクスを付加したい1行目の先頭にマークをセット(C-SPC)して、付加したい最後の行へカーソルを移動、それからM-x string-insert-rectangle RETとタイプしてください。バッファー全体に行う場合にはC-x h M-x string-insert-rectangle RETとタイプします。

yankしたメールメッセージにプレフィクスとして‘>’の付加を試みているなら、変数mail-yank-prefixをセットしたいと思うかもしれません。Messageバッファーではyankしたメッセージのメッセージの引用にM-; (これはリージョンのコメントアウトという汎用用途メカニズムである関数comment-regionを実行する)を使うことさえできます(メール/ニュースのフォローアップにふくまるテキストプレフィクスを変更するには?を参照)。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.32 上下に移動した際にたとえ短すぎる行でも同じ列にカーソルが留まる; このようにEmacsを振る舞わせるには?

M-x picture-modeを使用します。

変数track-eol、およびC-x C-nにバインドされているコマンドset-goal-column (Moving Point in The GNU Emacs Manualを参照)も確認してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.33 アイコン化するようEmacsに伝えるには?

C-zはEmacsをXで実行中ならアイコン化、それ以外ならEmacsをサスペンドします。Frame Commands in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.34 Emacsでregexp(正規表現)わ使用するには?

Regexp Backslash in The GNU Emacs Manualを参照してください。

演算子orは‘|’ではなく‘\|’、グルーピング演算子は‘\(’と‘\)’です。更にバックスラッシュの文字列構文は‘\\’です。Lisp文字列で‘xxx\(foo\|bar\)’のような正規表現を指定するには‘xxx\\(foo\\|bar\\)’を使用します。

バックスラッシュを2回記述することに注意してください!

  • Unixのgrepsedなどとは異なり、文字の補集合(‘[^...]’)にマッチしない文字として改行文字(LFDC-j、 または‘\n’)が記述されていなければ改行文字にマッチする。
  • 文字構文のregexp(たとえば‘\sw’)は文字セットにたいするregexp(たとえば‘[aeiou]’)の内部では意味をもたない(これは実際はregexp構文として典型的)。

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.35 複数ファイルを横断して置換操作を行うには?

Diredモード(M-x dired RETまたはC-x d)は、コマンドdired-do-find-regexp-and-replace (Q)をサポートしています。これは複数ファイルにおける正規表現の置換を可能にします。

以下のステップにしたがうことにより、このコマンドで複数ファイルにたいする検索/置換処理を行うことができます:

  • find-diredfind-name-diredfind-grep-diredのいずれかを使って、処理したいファイルのリストを用意する。
  • 結果として得られたDiredバッファーでtを使用してすべてのファイルをマークする。
  • Qを使用して、マーク済みファイルにたいするquery-replace-regexpセッションを開始する。
  • それぞれのファイルにたいしてすべての置換を承諾するために!を打鍵する。

Emacsの“tags”機能を使用して、別の方法で同じこと行うことができます。tags機能に含まれているコマンドtags-query-replaceTAGSファイルに記述されたすべてのファイルを横断してquery-replace(問い合わせ付き置換)を行います。Identifier Search in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.36 etagsのドキュメントはどこ?

etagsのmanページはemacsのmanページと同じ場所にあるはずです。

たとえば‘etags -H’のように、コマンドラインスイッチで手早く読める説明もあります。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.37 バックアップファイルを無効にするには?

何か不幸な出来事が起こったとき等は、特にバックアップが役立つので多分これを行いたいとは思わないでしょう。

Diredでバックアップファイル(およびその他の“関心がない”ファイル)を目にすることを避けるには、.emacsファイルに以下を追加してdired-xをロードしてください:

(add-hook 'dired-load-hook
          (lambda ()
           (require 'dired-x)))

dired-xのロードにより、M-oでそれぞれのdiredバッファーでの(関心がないファイルの表示)の省略が切り替わります。以下を.emacsに記述すれば、新たなdiredバッファーで省略をデフォルトにできます:

; 訳注
; FAQ執筆時以降実装が更新されているので以下のように読み変えてください。
; (現時点最新開発版28.0.??にバグレポート投げときます)
;   dired-omit-toggle -> dired-omit-mode
;   M-o               -> C-x M-o
(add-hook 'dired-mode-hook 'dired-omit-toggle)

Unixシェルで‘ls’するたびにバックアップファイルが目障りでうんざりしていたら、‘-B’オプションでGNU lsを試してみてください。GNU lsはGNU Fileutilsパッケージの一部であり、https://ftp.gnu.orgおよびそのミラーサイトで利用可能です(その他の最新のGNUスタッフはどこで入手できる?を参照)。

バックアップ作成を無効にしたり作成方法を変更する場合には、Backup Names in The GNU Emacs Manualを参照してください。

Emacs 21.1から変数backup-directory-alistをカスタマイズして、Emacsがバックアップファイルを置く場所を制御できるようになりました。この変数の値は特定のパターンの名前をもつファイルにたいして、バックアップファイルを特定のディレクトリーに置くように指定します。すべてのバックアップファイルをディレクトリーdirに置くことをEmacsに強制する要素("." . dir)を追加する等が典型的な使い方です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.38 auto-save-modeを無効にするには?

特にドキュメント編集中にEmacsやコンピューターがクラッシュしたとき等、オートセーブは役に立つので多分これを行いたいとは思わないでしょう。

そのかわりにEmacsがオートセーブを行う前に待機するキーストローク数を指定する変数auto-save-intervalを変更したいと思うかもしれません。この値を増加させることによって、その長さの間はEmacsにオートセーブの待機を強制します。これによって煩わしさが減るかもしれません。

Sebastian Kremerのauto-saveパッケージも調べたいと思うかもしれません(Emacsに同梱されていないEmacs Lispパッケージはどこで入手できるのか?を参照)。このパッケージではすべてのauto-saveファイルを/tmpのような1つのディレクトリーに置くこともできます。

auto-save-modeを無効にしたり動作を変更するには、Auto Save in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.39 行番号で特定行に移動するには?

行番号で行に移動する必要があるのは確かですか? もしかしたらコンパイラーがエラーメッセージをプリントしたソースファイル行を表示するのがあなたの望んでいることではありませんか? もしそうならEmacsからコマンドM-x compileおよびM-x recompileを使用してコンパイルすることで、より効率的にこれを行うことができます。Emacsはコンパイルエラーメッセージを自動的にインターセプトして、*compilation*と呼ばれる特別なバッファーに挿入ます。あなたはソース内の、各メッセージに対応する場所をvisitできます。問題のある行を1つずつステップスルーするにはC-x `とタイプします(Emacs 22からは前または次のマッチへ直接移動するM-g M-pおよびM-g M-nでも使用できる)。*compilation*バッファーのメッセージテキスト上でmouse-2をクリックするかRETを押下することによって、そのメッセージ中に記された行番号へ移動します。

しかし特定のテキスト行へ移動する必要が本当にあるならM-g M-g (Emacs 22からはgoto-line関数のデフォルトバインディング)をタイプしてください。Emacsは行番号の入力を求めてその行に移動するでしょう。

行番号を数引数としてgoto-lineを呼び出せば、これをより高速に行うことができます。たとえばC-u 286 M-g M-gはカレントバッファーの行番号286へジャンプします。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.40 プルダウンの新たなメニューオプションの作成や変更を行うには?

メニュータイトル(‘File’、‘Edit’、‘Buffers’など)はそれぞれローカルキーマップおよびグローバルキーマップを表しています。メニュータイトルをマウスで選択することによって、メニューのフォーム内にそのキーマップの非nilのコンテンツが表示されます。

したがって既存メニューにメニューオプションを追加するために行う必要があるのは、適切なキーマップへの新たな定義の追加だけです。つまり‘Edit’メニューに‘Forward Word’アイテムを追加するためには、以下のLispコードが必要です:

(define-key global-map
  [menu-bar edit forward]
  '("Forward word" . forward-word))

1行目ではグローバルメニューバーエントリーを含むグローバルキーマップにエントリーを追加しています。global-mapへの参照をローカルキーマップに置き換えることにより、特定のモードだけにメニューオプションが追加されます。

2行目ではメニューバーから新エントリーへのパスを記述しています。これはこのメニューエントリーを‘File’メニューの下に配置するには、2行目のeditという単語をfileに変更すればよいことを意味します。

3行目は1つ目の要素が表示されるタイトル、2つ目の要素がメニューオプション呼び出し時に呼び出される関数であるようなコンスセルです。

既存メニューへの新オプション追加で新たなメニューを追加するためには、新たにキーマップ全体を定義しなければなりません。

(define-key global-map [menu-bar words]
  (cons "Words" (make-sparse-keymap "Words")))

上記のコードは新たに疎キーマップ(sparse keymap)を追加して名前‘Words’を付与、それをグローバルメニューバーにアタッチしています。したがってこの新メニューへの‘Forward Word’アイテム追加には、以下のようなコードが必要になるでしょう:

(define-key global-map
  [menu-bar words forward]
  '("Forward word" . forward-word))

キーマップが機能する方法により、メニューオプションはより新しく定義されたアイテムがトップになるように表示されることに注意してください。したがってメニューオプション‘foo’、‘bar’、‘baz’を(この順番で)定義するとメニューオプションは‘baz’がトップ、‘foo’がボトムに表示されます。

これを回避する1つの方法として関数define-key-afterの使用があります。これはdefine-keyと同様ですが、アイテムが出現する位置を変更することができます。以下は‘Edit’メニューの‘Undo’アイテムの直後になるように、‘Forward Word’アイテムを挿入します。

(define-key-after
  (lookup-key global-map [menu-bar edit])
  [forward]
  '("Forward word" . forward-word)
  'undo)

define-key-afterにたいする2つ目と3つ目の引数がdefine-keyの場合とは異なること、そして追加した新しい(3つ目の)引数がこの関数によってどのように定義されるかに注意してください。

ある場所から別の場所にメニューオプションを移動するには、最後の引数を適切に指定してdefine-key-afterを評価するだけです。

より詳細な情報、およびメニューオプションの作成と変更にたいする更に多くの例については、Emacs Lisp Reference Manualの“Menu Keymaps”にあります(このマニュアル内の情報についてはEmacs Lispではどこでドキュメントを入手すれば?を参照)。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.41 メニューやメニューオプションを削除するには?

メニューを削除するには、そのキーマップに‘nil’をセットするのがもっともシンプルな方法です。たとえば‘Words’メニュー(プルダウンの新たなメニューオプションの作成や変更を行うには?を参照)を削除するには以下を使用します:

(define-key global-map [menu-bar words] nil)

同じようにメニューオプションを削除するには、キーマップエントリーをnilに再定義する必要があります。たとえば‘Edit’メニューから(プルダウンの新たなメニューオプションの作成や変更を行うには?で追加した)‘Forward word’メニューオプションを削除するには以下を使用します:

(define-key global-map [menu-bar edit forward] nil)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.42 構文ハイライトをオンにするには?

font-lock-modeはEmacsがカレントバッファーでシンタックスハイライトを行う標準的な方法です。これはEmacs 22.1以降ではデフォルトで有効になっています。

font-lock-modeをオンに切り替えると、異なるタイプのテキストは違うカラーで表示されます。たとえばプログラミング用のモードでは変数はあるフェイス、キーワードはそれとは異なるフェイス、コメントは更に違うフェイスで表示されるでしょう。

既存バッファーでfont-lock-modeをオフに切り替えるにはM-x font-lock-mode RETを使用してください。

Emacs 21以前では以下のコードを.emacsファイルに記述して、font-lock-modeをグローバルにオンに切り替えることができます。

(global-font-lock-mode 1)

font-lock-modeによるバッファーのハイライトにはかなり時間がかかるために、苛立たしい表示の遅延を引き起こすので、これに対処するための機能がいくつかあります。

Emacs 21ではfont-lock-modeをオンに切り替えることによって、jit-lock-modeが提供する新たなJITフォント表示(Just-In-Time fontification)が自動的にアクティブになります。jit-lock-modeはバッファーをユーザーに実際に見せる必要が生じるまで、そのバッファー範囲のフォント表示を遅延させるとともに、Emacsがアイドル中にもフォント表示を行えます。これによってバッファーの可視範囲はほとんど瞬時に表示されるようになります。jit-lock-modeのカスタマイズの詳細についてはC-h f jit-lock-mode RETとタイプしてください。

21より前のバージョンのEmacsではささやかなものから派手なものまで、異なるレベルの装飾が利用可能です。より多くの装飾にはバッファーがフォント表示されるまで、より長い時間待機する必要があることを意味しています。バッファーがどのように装飾されるべきかを制御するには、.emacsファイルでfont-lock-maximum-decorationに値をセットします。nil値はデフォルトの(通常は最低限の)装飾、tは最大限の装飾を意味します。できるだけ派手な外観にするには.emacsファイルに以下の行を含めてください。

(setq font-lock-maximum-decoration t)

異なるモードでは違う方法でハイライトするようにこの変数をセットすることもできます。詳細についてはC-h v (またはM-x describe-variable RET)でfont-lock-maximum-decorationのドキュメントを確認してください。

更にC-h f font-lock-mode (M-x describe-function RET font-lock-mode RET)で利用できる関数font-lock-modeのドキュメントも参照してください。

バッファーをフェイス(カラーとフォント)付きでそのままプリントするためには、M-x ps-print-buffer-with-facesまたはM-x ps-print-region-with-facesを使用します。あなたにはPostScriptプリンターにテキストを送信する方法、あるいはGhostscriptのようなPostScriptインタープリターが必要になるでしょう。詳細については変数ps-printer-nameps-lpr-commandps-lpr-switchesのドキュメントを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.43 画面下端に移動した際にEmacsが1行だけスクロールするよう強制するには?

M-x customize-variable RET scroll-conservatively RETscroll-conservativelyをカスタマイズして大きな値、たとえば10000にセットしてください。これが何を意味するかについては、Auto Scrolling in The GNU Emacs Manualの説明を参照してください。

かわりに.emacsで以下のLispフォームを使うこともできます:

(setq scroll-conservatively most-positive-fixnum)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.44 EmacsでMS-DOSファイルを編集するには?

MS-DOS (およびWindows)のファイルの検出と処理は透過的に行われます。Unixシステム上でファイルフォーマットについて心配するなくMS-DOSファイルのオープン、編集、保存を行うことができます。

MS-DOS形式ファイルの編集時には、それがDOSファイルであることが示されます。UnixとGNU/Linuxシステム、およびMacintoshでもモードライン左端付近に文字列‘(DOS)’が表示されるでしょう。DOSのEOLフォーマットをデフォルトとして使用するDOSおよびWindowsでは、モードラインにバックスラッシュ(‘\’)が表示されます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.45 ピリオドごとにその後の単一スペースでパラグラフをフィルするようEmacsに伝えるには?

以下の行を.emacsファイルに追加してください:

(setq sentence-end-double-space nil)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.46 なぜShellモードlsは奇妙なエスケープシーケンスを出力するのか?

多くのシステムでは、lsはANSIカラーエスケープシーケンスを使用してプリントを行う‘ls --color’にエイリアスされています。Emacsのバージョン21.1以降には、これらのエスケープシーケンスをShellモードに認識させるansi-colorパッケージが含まれています。Emacs 23.2以降では、このパッケージはデフォルトで有効になっています。これより前のバージョンではShellバッファーでM-x ansi-color-for-comint-modeとタイプするか、あるいはinitファイルに(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)を追加することで有効にできます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.47 MS-WindowsでフルスクリーンモードでEmacsを開始するには?

Emacs 24からはコマンドラインオプション‘--maximized’でEmacsを開始するか、あるいは.emacsファイルに以下のフォームを記述します:

(add-hook 'emacs-startup-hook 'toggle-frame-maximized)

これより古いバージョンでは関数w32-send-sys-commandを使用してください。たとえば以下を.emacsファイルに記述できます:

(add-hook 'emacs-startup-hook
          (lambda () (w32-send-sys-command ?\xF030)))

Emacsの開始におけるデフォルトのフレームサイズからフルスクリーンに拡がる、若干惑わされる視覚効果を回避するにはWindowsのレジストリ文字列に‘Emacs.Geometry’エントリーを追加できます。X Resources in The GNU Emacs Manualを参照してください。

幅と高さの正しい値を計算するためには、まずEmacsフレームを最大化してからM-:(frame-height)および(frame-width)を評価してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6 バグやトラブル

Emacsマニュアルにはユーザーが陥りやすい類の一般的なトラブルのリストがあるので、このチャプターに記述されていない問題に遭遇したら、Dealing with Emacs Trouble in The GNU Emacs Manualを参照してください。バグを見つけたと判断したら、それをどうすればよいかについてはReporting Bugs in The GNU Emacs Manualを参照してください。

Emacsディストリビューションに同梱されているファイルetc/PROBLEMSは特定プラットフォームでのEmacsのビルド、使用にたいする既知の様々な問題のリストがあります。これを読むにはC-h C-pとタイプしてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.1 Emacsにとって大きなファイルは問題になるか?

Emacsのバッファーサイズには固定された固有の制限があります。これは同一プラットフォームで他のプログラムがサポートするオブジェクトの最大サイズと比較すると厳しい制限です。

バッファーの最大サイズはバージョン23.2からは32ビットマシンで512MBです。--with-wide-intフラグを使用してEmacsをビルドした場合には、バッファーの最大サイズは32ビットマシンで2GBです。

64ビットマシンでコンパイルしたEmacsはより大きいmost-positive-fixnum (2.3EB)までのバッファーを扱うことができます(訳注: 1E=1exaは10の18乗)。

マルチバイト文字のデコーディングのような事柄のために、visitできるのはバッファーのサイズ制限の概ね半分のサイズのファイルだけです。圧縮されたアーカイブをvisitする際には、解凍のためにファイルサイズの制限はより小さくなります。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2 Shellバッファーから‘^M’やエコーされるコマンドを取り除くには?

それらを取り除くにはM-x comint-strip-ctrl-m RETを試してください。これが機能しない場合にはいくつかのオプションがあります。

tcshでは以下を.cshrc (または.tcshrc)ファイルに記述してください:

if ($?INSIDE_EMACS && $?tcsh)
    unset edit
    stty -icrnl -onlcr -echo susp ^Z
endif

あるいは以下をファイル.emacs_tcshまたは~/.emacs.d/init_tcsh.shに記述してください:

unset edit
stty -icrnl -onlcr -echo susp ^Z

Shellバッファーでtcshのかわりにcshを使用してください。1つ目の方法は:

(setq explicit-shell-file-name "/bin/csh")

別に.cshrc (または.tcshrc)ファイルでこれを行う方法があります:

setenv ESHELL /bin/csh

(環境変数を正しくセットした後は、これが効果をもつようにEmacsを再起動しなければなりません。)

以下のLispフォームでEmacs LispによりESHELL環境変数をセットすることもできます:

(setenv "ESHELL" "/bin/csh")

上記の解決策は最初にシェルが‘^M’文字を生成するのを防ぐ試みです。これが不可能(たとえばWindowsシェルを使用している)なら、.emacsに追加することによってEmacsにそれらの文字をバッファーから削除させることができます。

(add-hook 'comint-output-filter-functions #'comint-strip-ctrl-m)

関連する注意: あなたのシェルが入力行をShellバッファーでエンコードする場合には、Shellバッファーでcomint-process-echoes変数をカスタマイズするか、あるいはシェルの起動ファイルで以下のコマンドの実行を試みたいと思うかもしれません:

stty -icrnl -onlcr -echo susp ^Z

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3 M-x shellを実行するとエラーメッセージを返されるのはなぜ?

これはEmacsが間違った場所でシェルを探そうとして起こるかもしれません。シェル実行形式の場所をあなたが知っていたら、.emacsファイルで変数explicit-shell-file-nameがそのフルファイル名を指し示すようにセットしてください。

MS-Windows上のShellモードでお節介なアンチウイルスソフトウェアによりトラブルに遭う人がいます。このようなケースでは常駐アンチウイルスプログラムを無効にすると問題は解決するでしょう。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.4 端末タイプ‘emacs’用のtermcap/terminfoエントリーはどこ?

端末タイプ‘emacs’にたいするtermcapエントリーは、通常はサブシェルの環境変数‘TERMCAP’にセットされます。これは特定の状況下(たとえばShellバッファーからのrlogin)において、システムワイドなtermcapファイルにエントリーを追加する助けになるかもしれません。以下は‘emacs’にたいする正しいtermcapエントリーです:

emacs:tc=unknown:

emacs’にたいするterminfoエントリーを作成するにはticまたはcaptoinfoを使用します。/usr/lib/terminfo/e/emacsを生成する必要がありますが、これは単に/usr/lib/terminfo/d/dumb/usr/lib/terminfo/e/emacsにコピーすれば大丈夫です。

termcap/terminfoエントリーがあってもShellバッファーでのフルスクリーンプログラムの使用は有効になりません。かわりにM-x termを使用してください。

termcap/terminfo不在による問題を回避するためには、シェルのスタートアップファイルで端末タイプを‘emacs’から‘dumb’か‘unknown’に変更します。cshユーザーは以下を.cshrcファイルに記述できます:

if ("$term" == emacs) set term=dumb

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.5 Emacsが‘Error in init file’と言うのはなぜ?

あなたの.emacsファイル、あるいはシステムワイドファイルsite-lisp/default.elのロード中にエラーが発生したためです。Emacs 21.1以降では*Messages*バッファーがポップアップして、そこにデバッグ用のヒントを与えるためのエラーに関する追加情報を書き込みます。

あなたの.emacsファイルをデバッグする方法については.emacsファイルをデバッグするには?を参照してください。

まず何らかのパッケージのロードが必要だったり、そあるいはパッケージのロード後に評価されるフックを使用したのかもしれません。このよくあるケースについてはEmacs起動後でなければ.emacsファイルの[端末やウィンドウシステム]のセットアップコードが機能しないのはなぜ?に記述があります。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.6 EmacsがXリソース(わたしの.Xdefaultsファイル)を無視するのはなぜ?

Emacsは以下の環境変数が指定するファイルからXリソースを検索します。

  • XFILESEARCHPATH
  • XUSERFILESEARCHPATH
  • XAPPLRESDIR

これはXツールキットを使用して記述されたプログラムが提供する機能をエミュレートします。

XFILESEARCHPATHXUSERFILESEARCHPATHはコロンで区切られたファイル名のリスト、XAPPLRESDIRはコロンで区切られたディレクトリーのリストです。

Emacsは以下のようにXリソースを検索します:

  1. コマンドラインで‘-xrm RESOURCESTRING’オプションによって指定された値
  2. 環境変数‘XENVIRONMENT’の値
    • - これがセットされていなければ、~/.Xdefaults-hostnameという名前のファイルがあればその中から(hostnameはEmacsが実行中のマシンの名前)
  3. サーバーが提供するスクリーン固有のシステムワイドなリソースプロパティ
    • - これがセットされていなければ、~/.Xdefaultsという名前のファイルがあればその中から
  4. XUSERFILESEARCHPATH’にリストされたファイル
    • - 環境変数‘LANG’がセットされていれば‘XAPPLRESDIR’にリストされたディレクトリーにあるlang/Emacsという名前のファイルの中から(langは環境変数LANGの値)
    • - ‘XAPPLRESDIR’にリストされたディレクトリーにあるEmacsという名前のファイルの中から
    • - (環境変数LANGがセットされていれば) ~/lang/Emacsの中から
    • - ~/Emacsの中から
  5. XFILESEARCHPATHにリストされたファイルの中から

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.7 わたしがカスタマイズしたフレームパラメーターが機能しないのはなぜ?

これが発生したのは恐らく変数initial-frame-alistでフレームパラメーターをセットしたからです。この変数にはEmacs起動時に作成された最初のフレームに使用されたパラメーターだけが保持されています。すべてのフレームのパラメーターをカスタマイズするためには、かわりにdefault-frame-alistを変更してください。

これらの2つの変数が存在するのは、多くのユーザーが特別な方法で初期フレームをカスタマイズするからです。たとえば初期フレームの位置とサイズを判断することができ、かつ他のフレームについてはそれぞれを個別に配置してジオメトリを制御したいような場合です。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.8 名前に‘$’があるファイルを編集するには?

ミニバッファーでファイル名を入力する際に単語の前に‘$’があると、Emacsは環境変数としてそれの展開を試みます。この挙動を抑止するにはかわりに$$とタイプしてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.9 Shellモードがシェルのカレントディレクトリーを見失うのはなぜ?

Emacsには実際にシェルが自身のディレクトリーを変更したタイミングを知る手段がありません。これはUnixに内部の制限です。そのためにEmacsは‘cd’コマンドを識別して推測を試みます。変数リファレンスを含むディレクトリーが後に続くcd (cd $HOME/bin)やシェルのメタ文字を含むディレクトリー(cd ../lib*)をタイプすると、Emacsはシェルの新たなカレントディレクトリーの正確な推測に失敗するでしょう。Shellモードにおけるこの問題を処理するために、膨大な数の様々な訂正や改善が記述されてきました(XXXを行うEmacs Lispパッケージを見つけるには?を参照)。

コマンドM-x dirsでシェルのカレントディレクトリーをEmacsに伝えることができます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.10 Emacsにセキュリティリスクはある?

  • サードパーティのパッケージ。

    Emacsにインストールされた任意のパッケージはEmacs自身のプロセスと同じ権限で任意のコードを実行できる。サードパーティのアーカイブをパッケージシステム(M-x list-packagesなど)で使用する際には注意を要する。信頼可能なサードパーティだけを使用すること!

  • file-local-variable機能(確かに危険だが容易に変更できる)。

    Emacsにはファイル終端付近に特別にフォーマットされたテキストを含むファイルを編集する際に、変数にたいするローカル値のセットを許す機能がある。この機能にはファイルをvisitする際に任意のEmacs Lispコードを評価する能力も含まれる。当然、トロイの木馬がこの機能を悪用する可能性がある。

    Emacsにはバージョン22の時点において、セットしても安全だと判っているローカル変数のリストがある。このリスト以外の変数のセットをファイルが試みると、その変数をセットするべきかどうかユーザーに確認を求める。変数enable-local-evalをセットすることにより、ファイル下部で見つけたEmacs Lispコードの評価を許すか否かをEmacsに伝えることもできる。

    File Variables in The GNU Emacs Manualを参照のこと。

  • 合成Xイベント(確かに危険なので‘MIT-MAGIC-COOKIE-1’以上を使用すること)。

    EmacsはSendEventリクエストが生成した合成Xイベント(synthetic X event)を、通常イベントであるかのように受け入れる。結果として簡単なホストベースの認証を使用していると、XワークステーションへのX接続をオープン可能な他のユーザーは、Emacsプロセスに(特権での他プロセス実行を含む)何でも実行させることができる。

    他のユーザーによるX接続のオープンができないように防ぐことが、これにたいする唯一の修整である。‘MIT-MAGIC-COOKIE-1’のような本物の認証メカニズムを使用することが、これを防ぐ標準的な方法である。xauthプログラムの使用に何らかの効果があるなら、恐らく‘MIT-MAGIC-COOKIE-1’を使用しているだろう。あなたのサイトは上位の認証方式を使用しているかもしれない。システム管理者に尋ねてみて欲しい。

    本物の認証が利用できなければ、Xプログラム起動中の短い時間内だけホストへのアクセスを許可して、その後にアクセスを削除することで満足できるかもしれない。これは敵対的ユーザーがアクセス可能な時間枠が縮小されるのでリスクは幾分低減するものの、排除はされていない

    UnixおよびXを実行中のコンピューターのほとんどではxhostコマンドを使用してアクセスを有効または無効にできる。すべてのホストにXサーバーへのアクセスを許可するには、

    xhost +
    

    をシェルプロンプトで使用する。これは(少なくともHPマシンでは)以下のメッセージを生成する:

    access control disabled, clients can connect from any host
    

    (名前により明示的に許可されたホストを除き)すべてのホストにたいしてXサーバーへのアクセスを拒絶するには以下を使用する

    xhost -
    

    HPのテスト機では、このコマンドは以下のメッセージを生成した:

    access control enabled, only authorized clients can connect
    

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.11 何かしようとするとDiredが‘no file on this line’と言う。

Diredはファイル名の先頭を見つけるために正規表現を使用します。Unix形式の長いディレクトリーリスト(‘ls -l’)では、ファイル名は日時の後で始まります。したがってこのregexpは日時を探すように記述されています。デフォルトでは言語に関わらず日付と時刻を認識して然るべきですが、あなたのディレクトリーリストが通常のフォーマットでなければDiredが混乱するかもしれません。

これを解決するには2つのアプローチがあります。1つ目には‘ls -l’の出力がより標準的なフォーマットになるように設定を行うことです。詳細はあなたのOSのマニュアルを参照してください。

2つ目のアプローチはDiredが使用する正規表現directory-listing-before-filename-regexpを変更することです。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7 Emacsのコンパイルとインストール


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1 Emacsをインストールするには?

この回答はUnixおよびUnix風システムを使用するユーザーを意図しています。他のオペレーティングシステムのユーザーはMS-DOS用のEmacsはどこ?で始まる一連の問いを確認する必要があります。これらにはUnix以外のソースおよびバイナリーを取得する場所、それらのシステムでEmacsをインストールする方法が記されています。

GNU/Linuxディストリビューションのほとんどでは、事前ビルドされたEmacsパッケージが提供されています。Emacsがすでにインストール済みでなければ‘dnf install emacs’ (Red Hatとその派生物の場合。古いディストリビューションは‘yum’を使用)、または‘apt-get install emacs’ (Debianとその派生物の場合)のようなコマンドを(rootとして)実行することでインストールできます。

自分でEmacsをコンパイルしたい場合には、ソースディストリビューションのファイルINSTALLを読んでください。要約すると:

  • まずEmacsのソースをダウンロードする。ダウンロードできるサイトのリストはその他の最新のGNUスタッフはどこで入手できる?を参照のこと。GNUディストリビューションのメインサイトhttps://ftp.gnu.orgでは以下からダウンロード可能

    https://ftp.gnu.org/pub/gnu/emacs/emacs-VERSION.tar.gz

    (‘VERSION’は‘23.1’のように適切なバージョン番号に置き換えること。)

  • 次にソースファイルを解凍、抽出する。これには標準ユーティリティーgziptarが必要。これらがシステムになければhttps://ftp.gnu.orgからダウンロードできる。

    GNU tarなら一度に解凍抽出ができる:

    tar -zxvf emacs-VERSION.tar.gz
    
  • この時点でEmacsのソースファイルはemacs-VERSIONというディレクトリーにあるはず。UnixおよびUnix風システムのほとんどでは、以下のコマンドでEmacsをコンパイルできるだろう。
    cd emacs-VERSION
    ./configure         # 特定システム向けにEmacsをconfigure
    make                # Makefileを使ってコンポーネントをビルド、Emacsを使用する
    

    makeが正常に完了したら、ビルドがうまくいった公算はかなり高い(不成功ならEmacsのビルドでトラブルに逢ったらどうすれば?を参照)。

  • デフォルトではEmacsは/usr/localにインストールされる。実際にファイルをインストールするには特権ユーザーになって以下をタイプする
    make install
    

    make install’によって/usr/local/bin/emacs/usr/local/share/info/にあるかもしれないEmacs Infoファイルは上書きされることに注意。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 Emacsのビルドでトラブルに逢ったらどうすれば?

まずはあなたの問題にたいする解決策があるかを確認するために、(Emacsソースを解凍した場所にある)ファイルetc/PROBLEMS調べてください。次にこのFAQからEmacsのインストールやコンパイルの問題に関連する他の問答を探してください。

あなたの問題を誰かに見てもらって解決の助けとしたいなら、Emacsのインストールでどこに助けを求めれば?を参照してください。

ドキュメントから解決策が見つからない場合には、どうかその問題をレポートしてください(Emacsのバグやその他の問題はどこにレポートすれば?を参照)。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9 キープバインディング


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.1 キー(ファンクションキー含む)をコマンドにインストールするには?

対話的に、あるいは.emacsファイルでキーをコマンドにバインドできます。すべてのモードにたいしてキーを対話的にバインドするには、M-x global-set-key RET key cmd RETとタイプします。

カレントのメジャーモードだけでキーをバインドするにはM-x local-set-key RET key cmd RETとタイプします。

Key Bindings in The GNU Emacs Manualを参照してください。

対話的にキーをバインドするプロセスを容易にするために次の“trick”を使用できます:
まず対話的にキーをバインドしてからすぐにC-x ESC ESC C-a C-k C-gとタイプ、
これでキーバインドを要するコマンドがkillリングに取り込まれたので.emacsファイルにyankできるようになった。

グローバルなキーバインディングの場合にはコマンドの変更は不要です。たとえば、

(global-set-key [f1] 'help-for-help)

これは.emacsファイルに直接記述できます。ローカルなキーバインディングの場合には、コマンドは‘add-hook’関数と組み合わせて使用されます。たとえばTeXモードでのローカルバインディングは以下のようになるでしょう

(add-hook 'tex-mode-hook
  (lambda ()
   (local-set-key [f1] 'help-for-help)))
  • killリングからyankしたキーシーケンス内でのコントロール文字の形式はグラフィック形式 — つまりCTRLは‘^’、TABはいくつかのスペース(通常は8)で示されるでしょう。これらをベクターや文字列形式に変換したいと思うかもしれません。
  • プレフィクスキーとしてある文字シーケンスをバインドする場合に、それがすでにコンプリートキーとしてバインドされていたら、新しいバインディングの前にコンプリートキーのバインドを解除しなければならない。たとえばESC {がバインド済みなら:
    (global-unset-key [?\e ?{])   ;; または
    (local-unset-key [?\e ?{])
    
  • コマンドや“lambdaリスト”は別として、ベクターや文字列もキーにバインドできるのでマクロとして扱うことができる。たとえば:
    (global-set-key [f10] [?\C-x?\e?\e?\C-a?\C-k?\C-g])  ;; または
    (global-set-key [f10] "\C-x\e\e\C-a\C-k\C-g")
    

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.2 Emacsが‘Key sequence XXX uses invalid prefix characters’と言うのはなぜ?

通常は2つのうちいずれかが発生したからです。1つ目はキーシーケンス内のコントロール文字の指定誤りです(Lisp式で‘\C-f’のかわりに‘C-f’を使用した)。2つ目はバインドを試みているキーストロークシーケンス内のプレフィクスキー(prefix key)がすでにコンプリートキー(complete key)としてバインドされているからです。歴史的な理由により‘ESC [’は通常は問題になります。この場合にはキーシーケンスのバインドを試みる前に、以下のフォームのいずれかを評価する必要があります:

(global-unset-key [?\e ?[])  ;; または
(global-unset-key "\e[")

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.3 Emacs起動後でなければ.emacsファイルの[端末やウィンドウシステム]のセットアップコードが機能しないのはなぜ?

スタートアップの間、Emacsは与えられたコード/ファイルの順番に応じて自身を初期化します。端末またはウィンドウシステムのセットアップコードが実行されるまで、.emacsファイル内のあるコードを延期する必要があるのにセットアップが終わっていないと、この問題を体験することになるでしょう(このコード/ファイルの実行順はスタートアップ後は強制されない)。

端末またはウィンドウシステムのセットアップ後までEmacs Lispコードの実行を延期するには、コードをlambdaリスト(lambda list)としてemacs-startup-hook (またはEmacs 24.4はtty-setup-hook)に追加してください。たとえば、

(add-hook 'emacs-startup-hook
          (lambda ()
           (when (string-match "\\`vt220" (or (getenv "TERM") ""))
             ;; vt220の"Do"キーをM-xのように振る舞わせる:
             (global-set-key [do] 'execute-extended-command))))

起動のたびにEmacsが何を行っているかについてはlisp/startup.elを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4 ファンクションキーや矢印キーが発する文字やシンボルを確認するには?

C-h cの後にファンクションキーか矢印キーをタイプしてください。コマンドはファンクションキーシンボルか文字シーケンスをリターンするでしょう(説明はEmacsドキュメントを参照)。これは他のキーでも同様に機能します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.5 Xのキー変換をEmacs用に設定するには?

EmacsはデフォルトではXtライブラリーを使用するように記述されていないので、何の“変換(translation)”もセットされていません(XtとともにEmacsをビルドした場合にそのような変換をどのようにセットするかわたしたちには定かではないので、これを行うことができたらどうか知らせてください!)。

Emacs内でのキーの挙動に影響を与えるにはxmodmap (Emacs外部)、あるいはdefine-key (Emacs内部)を通じて行う方法だけです。define-keyコマンドはlocal-function-key-mapと組み合わせて使用する必要があります。たとえば、

(define-key function-key-map [M-TAB] [?\M-\t])

これはキーシーケンスM-TABを定義します。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.6 Backspaceキーがヘルプを呼び出すのはなぜ?

(ほとんどのキーボードでは)BackspaceキーはASCIIコードの8を生成します。C-hが送信するコードも同じです。EmacsではデフォルトではC-hはhelp-commandを呼び出します。これは‘help’の最初の文字が‘h’なので簡単に覚えられることを意図したものです。この問題のもっとも簡単な解決策はヘルプにはC-h (とBackspace)を使い、前の文字の削除にはDEL(Deleteキー)を使うことです。

多くの人たちにとって、この解決策は問題があるかもしれません:

  • 彼らはEmacs外部では前の文字の削除に通常はBackspaceを使用する。これはEmacs外部で前の文字を削除するコマンドをDELにすれば解決できる。多くのUnixシステムでは、以下のコマンドはDELをリマップするだろう:
    stty erase '^?'
    
  • ユーザーはキーボード上でより使いやすい位置にある、あるいは別個にDeleteキーがないという理由によって、前の文字の削除にBackspaceキーを使うことを好むかもしれない。この場合にはBackspaceキーにDeleteのように振る舞わせる必要がある。いくつかの方法がある。
    • - いくつかの端末(例: VT3##端末)や端末エミュレータ(例: TeraTerm)では、セットアップメニューからBackspaceキーが生成する文字を変更できる。
    • - 完全にプログラム可能なキーボードや、任意のキーから別の任意のキーへのリマップをサポートする端末エミュレータを入手できるかもしれない。
    • - Emacs 21.1以降ではオプションnormal-erase-is-backspace-modeのカスタマイズ、またはM-x normal-erase-is-backspace呼び出しにより、ダム端末およびウィンドウ化されたディスプレーの両方において、BackspaceキーおよびDeleteキーの効果を制御できる。これらのシンボルのドキュメントについてはEmacs Lispではどこでドキュメントを入手すれば?を参照のこと。
    • - Emacs内部ではBackspaceキーとDELキーを交換できる:
      (keyboard-translate ?\C-h ?\C-?)
      

      これはたとえDELdelete-backward-char以外の何かにバインドするモードでも機能するので、BackspaceDELのように動作させる際の推奨方法である。

      同じようにDELC-d (デフォルトでは前方に削除)のように振る舞うようにリマップできる:

      (keyboard-translate ?\C-? ?\C-d)
      

      keyboard-translateについての詳細は2つのキーを入れ替えるには?を参照のこと。

    • - 別のアプローチとしては、キーバインディングを切り替えてかわりにC-x hをヘルプにする:
      (global-set-key "\C-h" 'delete-backward-char)
      
      ;; mark-whole-bufferをオーバーライドする
      (global-set-key "\C-xh" 'help-command)
      

      とはいえこの手法は推奨しない。これはDELdelete-backward-charにバインドするモードにたいしてのみ問題を解決する。view-modeモードのようにDELを別の何かにバインドするモードは、Backspaceキーを押下した際に期待通り動作しないだろう。この理由により、わたしたちは上述したkeyboard-translate手法をお勧めする。

      ヘルプ用として他に人気のあるキーバインディングはM-?C-x ?である。

    DELにたいしてローカルバインディングをもつモードが多数あり、それらと干渉するかもしれないので、DELhelp-commandをバインドしようとしてはならない。

ウィンドウ化されたディスプレーでEmacs 21以降を実行する場合には、これらのシステムでのキーボード操作とEmacsの矛盾が少なくなるように、Deleteをポイント位置の文字を削除するコマンドにバインドします。

この問題の解決についての詳細はIf DEL Fails to Delete in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.7 2つのキーを入れ替えるには?

keyboard-translateを使用して2つのキー(またはキーシーケンス)を交換できます。たとえばC-hDELDELC-hにするには、

(keyboard-translate ?\C-h ?\C-?)  ; 'C-h'をDELに変換
(keyboard-translate ?\C-? ?\C-h)  ; DELを'C-h'に変換

関数の後のキーシーケンスの1つ目はキーボードが何を生成するかを識別、2つ目はキーマップでそれが何にマッチするかを指定します。

しかしC-hDELの特別なケースにおいては、keyboard-translate呼び出しではなくnormal-erase-is-backspace-modeを切り替えるべきです。DEL Does Not Delete in The GNU Emacs Manualを参照してください。

キーボードの変換(translation)はキーマップのキーバインディングと同じではありません。Emacsには異なる状況に適用するために数々のキーマップがありますが、キーボード変換は1セットしかなく、Emacsが端末から文字を読み取るたびにそれが適用されます。キーボード変換は入力プロセスのもっとも低いレベルで行われます。キーマップに照合される文字にはキーボード変換された結果の文字が含まれています。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.8 キーボードでC-XXXを生成するには?

(X配下ではない)端末で一般的ないくつかの“エイリアス”です:

C-2C-SPC

C-@

C-6

C-^

C-7C-S--

C-_

C-4

C-\

C-5

C-]

C-/

C-?

多くの場合は他にもエイリアスが存在します。あなたのキーボードでC-h cコマンドを使って、CTRLとすべての数字を試して何が生成されるか確認してみてください。コマンド名が判っていればC-h wコマンドを試してみることもできます。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.9 Metaキーがない、どうすれば?

多くのキーボードでは、AltキーはMetaのように振る舞うので試してみてください。

M-aのかわりにESC aとタイプすることができます。実際のところ、いずれにせよEmacsは内部でM-aESC aに変換しています(meta-prefix-charの値による)。Metaaは一緒に押しますが、ESCの場合にはESCを押して離した後にaを押下することに注意してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.10 Escapeキーがない、どうすれば?

かわりにC-[をタイプしてください。これはエスケープキーのようにASCIIコードの27を送信するはずです。C-3でも機能する端末もあります(X配下でないこと)。多くの端末(特にDEC)では、F11ESCを生成します。そうでなければ以下のフォームを使用してこれをバインドできます:

;; DEC端末ではF11はESCの置き換えとドキュメントされている
(define-key function-key-map [f11] [?\e])

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.11 Compose CharacterキーをMetaキーのように機能させるには?

VT220のようなダム端末ではできません。噂では特定のVT220クローンは、この方法で設定することによって独自にComposeキーをもてるようです。Xを使用していればxmodmapコマンドでこれを行うことができるかもしれません。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.12 修飾キーとファンクションキーの組み合わせをバインドするには?

ファンクションキーのシンボルにプレフィクスを追加することによって、ベクターフォーマットで修飾されたファンクションキーを表すことができます。たとえば(Emacsドキュメントより):

(global-set-key [?\C-x right] 'forward-page)

ここで‘?\C-x’は文字C-xにたいするLisp文字定数です。

ファンクションキーとともにControlMetaHyperSuperAltShiftの修飾キーが使用できます。これらの修飾キーを表現するにはシンボル名の前に‘C-’、‘M-’、‘H-’、‘s-’、‘A-’、‘S-’を前置します。以下はH-M-RIGHTを単語1つ前方に移動にする方法です:

(global-set-key [H-M-right] 'forward-word)
  • すべての修飾キーがどんな状況でも許されている訳ではありません。Unix文字端末ではHyperSuperAltは利用できません。この種の状況下では非ASCIIキーとマウスイベント(たとえばC-=mouse-1)も失敗します。

キーバインディングについての一般的な説明についてはキー(ファンクションキー含む)をコマンドにインストールするには?を参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.13 xtermウィンドウでMetaキーが機能しないのはなぜ?

Single-Byte Character Set Support in The GNU Emacs Manualを参照してください。

Emacsマニュアルのアドバイスが失敗した場合には、更なる助けを求める前に以下の方法すべてを試してみてください:

  • ウィンドウマネージャーにmwmを使用することによって大きな問題を抱えているのかもしれない(mwmのEmacsでMetaキーが使用できるようにする汎用的で優れた解決策を知る人は居るのだろうか?)。
  • X11ではそれが本当にMetaキーなのか確認してほしい。あなたのMetaキーがどんなkeysymを生成するか確認するにはxevを使用する。Meta_LMeta_Rのいずれかのはずだが、もし違うならこの状況を修整するためにxmodmapを使用できる。MetaMeta_LMeta_Rを生成せず、M-xは非ASCII文字を生成するようなら以下を~/.Xdefaultsファイルに記述する:
     XTerm*eightBitInput:   false
     XTerm*eightBitOutput:  true
    
  • xtermが使用しているptyが8ビット文字を通すか確認すること。‘stty -a’ (あるいは‘stty everything’)がどこかに‘cs8’と表示するはずである。かわりに‘cs7’が表示されたら、これを修整するために‘stty cs8 -istrip’ (あるいは‘stty pass8’)を使用する。
  • xtermとEmacsの間にrlogin接続が存在する場合には、各文字の8ビット目をすべて渡すようにrloginに‘-8’引数を与える必要があるかもしれない。
  • UltrixでEmacsを実行しているなら、(set-input-mode t nil)の評価が助けになると報告されている。
  • 他のすべてが失敗したら、M-Wのタイプ時にxtermESC Wを生成させることができる。これはいずれにせよM-Wを受け取ったときにEmacsが行うであろう変換と同じである。X11R4では以下のリソース仕様でこれを行うことができるだろう:
    XTerm.VT100.EightBitInput: false
    

    (これはinsert-eight-bitアクションの振る舞いを変更する。)

    古いxtermではtranslationでこの挙動を指定できる:

    XTerm.VT100.Translations: #override \
      Meta<KeyPress>: string(0x1b) insert()
    

    Meta’を‘Alt’に置き換える必要があるかもしれない。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.14 HP-UX 8.0および9.xでExtendCharキーがMetaキーのように機能しないのはなぜ?

これはX11R4における国際化拡張の結果であるとともに、HPが現在はこの拡張を使用しているという事実を示しています。EmacsはMetaキーの状態に関わらずXLookupString関数が同じ結果をリターンするという、もはや必ずしも真とは言えない前提にもとづいています。Emacsが修整されるまでは、その場しのぎの一時的な修整ですがXサーバー起動後に毎回、できればxtermクライアント開始前に以下のコマンドを実行してください:

xmodmap -e 'remove mod1 = Mode_switch'

これはシステムワイドで追加のkeysymを無効にします。これはあなたが実際にそれらを使用つもりなら不本意かもしれません。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.15 SPCでファイル名が他の人されなくなった、なぜ?

Emacs 22.1からSPCはミニバッファーでファイル名の補完を行わなくなったので、スペースが埋め込まれたファイル名のタイプにおいてスペースをクォートする必要がなくなりました。

以下のようにミニバッファーでSPCminibuffer-complete-wordにバインドすることによって古い挙動に戻すことができます:

(define-key minibuffer-local-filename-completion-map (kbd "SPC")
  'minibuffer-complete-word)

(define-key minibuffer-local-must-match-filename-map (kbd "SPC")
  'minibuffer-complete-word)

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10 代替文字集合


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.1 Emacsで8ビット文字を表示するには?

Single-byte Character Set Support in The GNU Emacs Manualを参照してください。Unixのテキストのみの端末ディスプレー、あるいは‘emacs -nw’呼び出しでEmacsを実行する際には、たとえ言語環境を設定後であっても、通常はset-terminal-coding-systemを使用してその端末で表示可能なものをEmacsに伝える必要があります。さもないと非ASCII文字は‘?’と表示されるでしょう。他のMS-DOSやMS-Windowsのようなオペレーティングシステムでは、ディスプレーがサポートする文字についてEmacsがOSに問い合わせて、必要となる端末コーディングシステムを自動的にセットアップします。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.2 8ビット文字を入力するには?

8ビット文字の入力には様々なメソッドが利用できます。Single-byte Character Set Support in The GNU Emacs Manualを参照してください。より洗練されたメソッドについてはInput Methods in The GNU Emacs Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.3 セム語アルファベット(右から左に記述)を扱えるEmacsを入手できるのはどこ?

バージョン24.1以降のEmacsではアラビア語、ペルシア語、ヘブライ語のような双方向スクリプト(bidirectional script)の表示と編集がサポートされています。bidirectional displayを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.4 Emacsで使うフォントを追加するには?

まずBDFフォントファイル、およびそれらが必要とするすべての補助パッケージをダウンロードしてインストールしてください。GNU Intlfontsディストリビューションはthe GNU Software Directory Web siteで見つけることができます。

次にXウィンドウシステムの場合には、シェルプロンプトから以下の2つのコマンドを実行してください:

  xset +fp /usr/local/share/emacs/fonts
  xset fp rehash

(/usr/local/share/emacs/fonts以外の場所にフォントをインストールしていたら1つ目のコマンドは変更が必要。) たとえば~/.xsessionrc~/.gnomercのようなウィンドウシステムのスタートアップファイルに追加する等、ログイン時いつでもこれら2つのコマンドが実行されるようにアレンジも必要でしょう。

それでは以下の行をinitファイル~/.emacsに追加してください:

  (add-to-list 'bdf-directory-list "/usr/share/emacs/fonts/bdf")

(繰り返しになるが、別の場所にフォントをインストールしていたらファイル名は変更すること。)

最後にps-printでインストール済みフォントを使用したければ、以下の行を~/.emacsに追加してください:

  (setq ps-multibyte-buffer 'bdf-font-except-latin)

MS-Windowsでは追加でいくつかのステップが必要です。以下にリストします。

まずBDFフォントファイルがあるすべてのディレクトリーがbdf-directory-listに記述されていることを確認してください。UnixおよびGNU/Linuxシステムでは同一ディレクトリーにBDFフォントをインストールするためにmake installを実行します。それとは対照的にWindowsユーザーは通常はIntlfontsインストールコマンドは実行せずに、どこかのディレクトリーにディストリビューションを解凍してください。このディレクトリーにはBDFフォントがあるサブディレクトリーが含まれています。たとえばC:/IntlfontsにIntlfontsを解凍したとすると、以下のようにbdf-directory-listをセットする必要があります:

  (setq bdf-directory-list
    '("C:/Intlfonts/Asian"
      "C:/Intlfonts/Chinese" "C:/Intlfonts/Chinese.X"
      "C:/Intlfonts/Chinese.BIG" "C:/Intlfonts/Ethiopic"
      "C:/Intlfonts/European" "C:/Intlfonts/European.BIG"
      "C:/Intlfonts/Japanese" "C:/Intlfonts/Japanese.X"
      "C:/Intlfonts/Japanese.BIG" "C:/Intlfonts/Korean.X"
      "C:/Intlfonts/Misc"))

次は変数w32-bdf-filename-alistにBDFフォントのエイリアスとそれらに応じたファイル名をセットする必要があります。BDFフォントファイルのすべてのディレクトリーをbdf-directory-listにセットしたとすると、以下のLispコードでw32-bdf-filename-alistがセットアップされるはずです:

  (setq w32-bdf-filename-alist
     (w32-find-bdf-fonts bdf-directory-list))

今度はBDFフォント用にフォントセットを作成します:

  (create-fontset-from-fontset-spec
   "-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
   japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
   katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
   latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
   japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
   thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
   lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
   tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
   ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
   tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")

Intlfontsの国際化BDFフォントの多くはタイプ0なので、font-encoding-alistに追加する必要があります:

  (setq font-encoding-alist
        (append '(("MuleTibetan-0" (tibetan . 0))
                  ("GB2312"        (chinese-gb2312 . 0))
                  ("JISX0208"      (japanese-jisx0208 . 0))
                  ("JISX0212"      (japanese-jisx0212 . 0))
                  ("VISCII"        (vietnamese-viscii-lower . 0))
                  ("KSC5601"       (korean-ksc5601 . 0))
                  ("MuleArabic-0"  (arabic-digit . 0))
                  ("MuleArabic-1"  (arabic-1-column . 0))
                  ("MuleArabic-2"  (arabic-2-column . 0)))
                font-encoding-alist))

これでEmacsのフォントメニュー、あるいは~/.emacsでデフォルトフォントを設定することにより、‘bdf: 16-dot medium’の選択ができるようになりました。

  (set-frame-font "fontset-bdf")

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11 メールとニュース


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.1 メール/ニュースのフォローアップにふくまるテキストプレフィクスを変更するには?

メールをRmailで読んでいる場合には変数mail-yank-prefix、Gnusならmessage-yank-prefix、VMならvm-included-text-prefix、mh-eならmh-ins-buf-prefixをセットしてください。

より装飾的に引用を制御するにはSupercite(the Supercite Manual in The Supercite Manualを参照)を使用してください。

Emacsが返信先メッセージの様々なヘッダーを含めないようにするには、mail-yank-ignored-headersの値に適切な正規表現をセットしてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2 送信メールのコピーを保存するには?

メールメッセージの‘BCC’ヘッダーに自分を含めて自分にコピーをメールしたり、あるいは‘FCC’ヘッダーにファイルを含めてメッセージのコピーを直接保存できます。

標準的なメールを使用しているなら、以下を.emacsファイル記述して自分への‘BCC’を自動的に作成できます。

(setq mail-self-blind t)

以下のような行を.emacsファイルに記述すれば、自動的に‘FCC’フィールドを含めることができます:

(setq mail-archive-file-name (expand-file-name "~/outgoing"))

出力ファイルは Unixのメール形式になります。

mh-eを使用しているなら‘FCC’と‘BCC’のフィールドをコンポーネントファイルに加えてください。

.mailrcに‘set record filename’を記述しても機能しません。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.3 送信時にEmacsがエイリアスを展開しない、なぜ?

The Emacs Manual in The Emacs Manualを参照してください。

  • Emacsは通常はメール送信の際にエイリアスを展開する。送信前に展開するにはM-x expand-mail-aliasesを使用する。
  • Emacsは通常はセッションごとに1回、最初のメールメッセージを作成するときしか.mailrcファイルを読み込まない。その後にファイルを編集したらM-x build-mail-aliasesを使用してEmacsに再読み込みさせることができる。これはEmacs 24.1以前は対話的なコマンドではないので、かわりにM-: (build-mail-aliases) RETとタイプしなければならない。
  • もしも望むならabbrevとしてタイプすればすぐにメールエイリアスを展開できる。この機能を有効にするには以下を実行する:
    (add-hook 'mail-mode-hook 'mail-abbrevs-setup)
    

    エイリアスは単語区切り文字(RET,)をタイプした後でのみ自動的に展開される。エイリアス終端にポイントを移動してC-x a e (M-x expand-abbrev)をタイプして強制的に展開させることができる。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.4 Rmailフォルダーnメッセージを並び替えるには?

Rmailでソート関数とそれらのキーバインディングのリストを得るにはC-c C-s C-hとタイプします。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.5 Rmailが/var/spool/mailへの書き込みを必要とするのはなぜ?

これはRmailが使用するmovemailプログラムの振る舞いです。これはmovemailがロックファイルを使うように設定されていることを示しています。

RMSは記しています:

特定のシステムではメールファイルへのアクセスをインターロックするためにロックファイルが必要です。これらのシステムではmovemailはロックファイルに書き込まなければなりません。さもないとメールを失うリスクがあるからです。あなたはただmovemailにロックファイルを書き込ませるようアレンジしなければなりません。

他のシステムではインターロックアクセスのためにflockシステムコールを使用します。これらのシステムではflockを使用するようにmovemailを設定するべきです。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.6 他の受信者を除き送信者だけにRmailが返信するよう強制するには?

Ron Isaacson(訳注: Texinfoファイルには"isaacson@seas.upenn.edu"とコメントされていました)は述べています: Rmailで返信するためにrをタイプするとデフォルトでは元の受信者すべて(元の‘To’と‘CC’のリスト全員)にCCされます。(rの前にC-uをタイプして)プレフィクス引数を指定すると送信者だけに返信します。とはいえ返信したいときに全体を通してC-u作業を行うのは苦痛です。以下はわたしがこれに対処した中では最良の修整です。

(defun rmail-reply-t ()
  "カレントメッセージの送信者だけに返信する(rmail-replyを参照)"
  (interactive)
  (rmail-reply t))

(add-hook 'rmail-mode-hook
  (lambda ()
    (define-key rmail-mode-map "r" 'rmail-reply-t)
    (define-key rmail-mode-map "R" 'rmail-reply)))

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.7 メール/ニュースリーダーをEmacsに自動的に開始させるには?

EmacsをGnusで開始するには:

emacs -f gnus

Rmailでは:

emacs -f rmail

Gnusでより便利に開始するには:

alias gnus 'emacs -f gnus'
gnus

.emacsファイルから自動的にメールやニュースを開始するのは、恐らく賢明ではないでしょう。これは同時に2つのEmacsを実行する必要がある場合には問題を起こすかもしれません。更に必要な際に素早くEmacsを開始するのが困難になるかもしれません。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.8 Emacsでニュースを読むには?

M-x gnusを使用します。the Gnus FAQ in The Gnus Manualに含まれているthe Gnus Manual in The Gnus Manualを参照してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.9 Gnusわ高速にするには?

Gnus FAQ(Emacsでニュースを読むには?を参照)から引用します:

古いマシンの場合、あるいは実際にじれったいだけなら、Gnusの実行を高速にするためにできることがあります。

起動をより高速にするためにはgnus-check-new-newsgroupsgnus-check-bogus-newsgroupsnilをセットしてください。

summaryバッファーへの出入りをより高速にするためにgnus-show-threadsgnus-nov-is-evilgnus-use-cross-referencenilをセットしてください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.10 Gnusの全ニュースグループをキャッチアップするには?

*Newsgroup*バッファーでM-< C-x ( c y C-x ) M-0 C-x eとタイプします。

*Newsgroup*バッファーのポイント位置からバッファー終端までを確認したいだけなら、先頭のM-<は省略してください。


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Concept Index

Jump to:   #   $   -   .   /   2  
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z  
Index Entry  Section

#
#ifdef, selective display of Hiding #ifdef lines

$
$’ in file names Editing files with $ in the name

-
-debug-init’ option Debugging a customization file

.
., equivalent to vi command Repeating commands
.emacs debugging Debugging a customization file
.emacs file, errors in Errors with init files
.emacs file, locating Setting up a customization file
.emacs file, setting up Setting up a customization file
.Xdefaults Emacs ignores X resources

/
/var/spool/mail and Rmail Rmail writes to /var/spool/mail

2
24-bit direct color mode Colors on a TTY

A
Abbrevs, turning on by default Turning on abbrevs by default
Acronyms, definitions for Common acronyms
add fonts for use with Emacs How to add fonts
Adding to load-path Changing load-path
Alternate character sets Alternate character sets
Alternative Info file viewers Viewing Info files outside of Emacs
Anti-aliased fonts New in Emacs 23
Antivirus programs, and Shell Mode Problems with Shell Mode
Apple computers, Emacs for Emacs for macOS
Apropos Learning how to do something
Arabic Right-to-left alphabets
Archived postings from gnu.emacs.help Newsgroup archives
Arrow keys, symbols generated by Working with function and arrow keys
Aspell Spell-checkers
Associating modes with files Associating modes with files
auto-fill-mode, activating automatically Turning on auto-fill by default
auto-fill-mode, introduction to Wrapping words automatically
auto-mode-alist, modifying Associating modes with files
Auto-saving Disabling auto-save-mode
automatic display of Lisp APIs New in Emacs 25
Automatic entry to auto-fill-mode Turning on auto-fill by default
Automatic filing of outgoing mail Saving a copy of outgoing mail

B
Backspace key invokes help Backspace invokes help
Backup files in a single directory Disabling backups
Backups, disabling Disabling backups
Basic editing with Emacs Basic editing
Basic keys Basic keys
Bazaar repository, Emacs Latest version of Emacs
Beeping, turning off Turning off beeping
Beginning editing Basic editing
Bell, visible Turning off beeping
Bell, volume of Turning the volume down
bidirectional display New in Emacs 24
bidirectional editing New in Emacs 25
bidirectional scripts Right-to-left alphabets
bignum support New in Emacs 27
Binding keys to commands Binding keys to commands
Binding modifiers and function keys Binding combinations of modifiers and function keys
bracketed paste mode New in Emacs 25
Bug reporting Reporting bugs
Bugs and problems Bugs and problems
Building Emacs from source Installing Emacs

C
C-h, definition of Basic keys
C-M-h, definition of Basic keys
Case sensitivity in replacements Controlling case sensitivity
Case sensitivity of searches Controlling case sensitivity
case-fold-search Controlling case sensitivity
case-replace Controlling case sensitivity
Catching up all newsgroups in Gnus Catching up in all newsgroups
character folding in searches New in Emacs 25
Character sets New in Emacs 23
Checking spelling Spell-checkers
Colorizing text Turning on syntax highlighting
Colors on a TTY Colors on a TTY
Colors on text-only terminals New in Emacs 21
Column, displaying the current Displaying the current line or column
Command description in the manual Learning how to do something
Commands, binding keys to Binding keys to commands
Commands, extended Extended commands
Commands, repeating many times Repeating commands
Common acronyms, definitions for Common acronyms
Common requests Common requests
Compilation error messages Going to a line by number
Compiler error messages, recognizing Compiler error messages
Compiling and installing Emacs Compiling and installing Emacs
Compiling Emacs for DOS Emacs for MS-DOS
Compose Character key, using as Meta Compose Character
Console, colors Colors on a TTY
Contracting the FSF Contacting the FSF
Control characters, generating Producing C-XXX with the keyboard
Control characters, working with Working with unprintable characters
Control key, notation for Basic keys
Control-Meta characters, notation for Basic keys
Conventions for file names File-name conventions
Copying outgoing mail to a file Saving a copy of outgoing mail
COPYING, description of file Informational files for Emacs
Copyleft, real meaning of Real meaning of copyleft
Creating new menu options Modifying pull-down menus
Crosspostings make Gnus catching up slow Making Gnus faster
Current directory and shell-mode Shell mode loses the current directory
Current GNU distributions Current GNU distributions
Customization file, setting up Setting up a customization file
Customize groups Using Customize
Customize indentation Customizing C and C++ indentation
Customizing faces Using Customize
Customizing variables Using Customize

D
Daemon mode New in Emacs 23
Debugging .emacs file Debugging a customization file
Debugging .emacs file Errors with init files
Decoration level, in font-lock-mode Turning on syntax highlighting
DEL key does not delete Backspace invokes help
DEL, definition of Basic keys
delete-selection-mode Replacing highlighted text
Deleting menus and menu options Deleting menus and menu options
Development, Emacs Latest version of Emacs
Difference Emacs and XEmacs Difference between Emacs and XEmacs
Differences between Emacs 19 and Emacs 20 New in Emacs 20
Differences between Emacs 20 and Emacs 21 New in Emacs 21
Differences between Emacs 21 and Emacs 22 New in Emacs 22
Differences between Emacs 22 and Emacs 23 New in Emacs 23
Differences between Emacs 23 and Emacs 24 New in Emacs 24
Differences between Emacs 24 and Emacs 25 New in Emacs 25
Differences between Emacs 25 and Emacs 26 New in Emacs 26
Differences between Emacs 26 and Emacs 27 New in Emacs 27
Differences between Unix and Emacs regexps Using regular expressions
direct color in terminals Colors on a TTY
Directories and files that come with Emacs File-name conventions
Directory, current in shell-mode Shell mode loses the current directory
Directory-local variables New in Emacs 23
Dired does not see a file Dired claims that no file is on this line
Disabling auto-save-mode Disabling auto-save-mode
Disabling backups Disabling backups
Discussion of the GPL Real meaning of copyleft
Displaying eight-bit characters Emacs does not display 8-bit characters
Displaying the current line or column Displaying the current line or column
DISTRIB, description of file Informational files for Emacs
Do key Extended commands
Documentation New in Emacs 22
Documentation for etags Documentation for etags
Documentation on Emacs Lisp Emacs Lisp documentation
Documentation, installing new Texinfo files Installing Texinfo documentation
DOS, Emacs for Emacs for MS-DOS
double-buffering New in Emacs 26
Downloading and installing Emacs Installing Emacs
Downloading Emacs Finding Emacs on the Internet
Drag-and-drop New in Emacs 22

E
early init file New in Emacs 27
Echoed commands in shell-mode ^M in the shell buffer
Editing files with ‘$’ in the name Editing files with $ in the name
Editing MS-DOS files Editing MS-DOS files
Eight-bit characters, displaying Emacs does not display 8-bit characters
Eight-bit characters, entering Inputting eight-bit characters
Eight-bit characters, working with Working with unprintable characters
Emacs 20, new features in New in Emacs 20
Emacs 21, new features in New in Emacs 21
Emacs 22, new features in New in Emacs 22
Emacs 23, new features in New in Emacs 23
Emacs 24, new features in New in Emacs 24
Emacs 25, new features in New in Emacs 25
Emacs 26, new features in New in Emacs 26
Emacs 27, new features in New in Emacs 27
Emacs entries for termcap/terminfo Termcap/Terminfo entries for Emacs
Emacs for MS-DOS Emacs for MS-DOS
Emacs for MS-Windows Emacs for MS-Windows
Emacs Lisp Archive Packages that do not come with Emacs
Emacs Lisp List Packages that do not come with Emacs
Emacs Lisp Manual New in Emacs 22
Emacs Lisp Reference Manual Emacs Lisp documentation
Emacs manual, obtaining a printed or HTML copy of Getting a printed manual
Emacs manual, reading topics in Emacs manual
Emacs name origin Origin of the term Emacs
Emacs server functions Using an already running Emacs process
emacsclient Using an already running Emacs process
Enchant Spell-checkers
Enchant support New in Emacs 26
Entering eight-bit characters Inputting eight-bit characters
Epoch Difference between Emacs and XEmacs
Error in .emacs Errors with init files
Error in init file Errors with init files
Errors when building Emacs Problems building Emacs
Errors, recognizing compiler Compiler error messages
ESC, definition of Basic keys
Escape key, lacking No Escape key
Escape sequences in ls output Escape sequences in shell output
etags, documentation for Documentation for etags
Evaluating Lisp code Evaluating Emacs Lisp code
eww New in Emacs 25
Expanding aliases when sending mail Expanding aliases when sending mail
explicit-shell-file-name Problems with Shell Mode
ExtendChar key as Meta ExtendChar key does not work as Meta
Extended commands Extended commands

F
FAQ for Emacs on MS-Windows Emacs for MS-Windows
FAQ for Gnus Reading news with Emacs
FAQ notation FAQ notation
FAQ, font-lock-mode Turning on syntax highlighting
FAQ, obtaining the Obtaining the FAQ
Farsi Right-to-left alphabets
Faster, starting Gnus Making Gnus faster
File extensions and modes Associating modes with files
File name, displaying in the titlebar Displaying the current file name in the titlebar
File names containing ‘$’, editing Editing files with $ in the name
file-local-variable and security Security risks with Emacs
File-name conventions File-name conventions
Files included with Emacs Informational files for Emacs
Files, maximum size Problems with very large files
Files, replacing strings across multiple Replacing text across multiple files
Filing outgoing mail Saving a copy of outgoing mail
Fill prefix Automatic indentation
fill-column, default value Wrapping words automatically
Filling automatically Turning on auto-fill by default
Finding an Emacs Lisp package Finding a package with particular functionality
Finding commands and variables Learning how to do something
Finding current GNU software Current GNU distributions
Finding Emacs and related packages Finding Emacs and related packages
Finding Emacs on the Internet Finding Emacs on the Internet
Finding other packages Packages that do not come with Emacs
Finding topics in the Emacs manual Emacs manual
Folder, sorting messages in an Rmail Sorting the messages in an Rmail folder
font-lock-mode Turning on syntax highlighting
Frame parameters Emacs ignores frame parameters
frame-title-format Displaying the current file name in the titlebar
Free Software Foundation, contacting Contacting the FSF
Freetype fonts New in Emacs 23
FSF, definition of Common acronyms
Fullscreen mode Fullscreen mode on MS-Windows
Function documentation Emacs Lisp documentation
Function keys and modifiers Binding combinations of modifiers and function keys
Function keys, symbols generated by Working with function and arrow keys
Functionality, finding a particular package Finding a package with particular functionality

G
General Public License, real meaning of Real meaning of copyleft
General questions General questions
Generating control characters Producing C-XXX with the keyboard
Getting help Getting help
GNU mailing lists Guidelines for newsgroup postings
GNU newsgroups, appropriate messages for Guidelines for newsgroup postings
GNU, definition of Common acronyms
Gnus FAQ Reading news with Emacs
Gnus is slow when catching up Making Gnus faster
Gnus newsreader Reading news with Emacs
Gnus, Catching up all newsgroups in Catching up in all newsgroups
Gnus, starting faster Making Gnus faster
GNUstep port New in Emacs 23
GNUstep, Emacs for Emacs for GNUstep
Going to a line by number Going to a line by number
Good bug reports Reporting bugs
GPL, definition of Common acronyms
GPL, real meaning of Real meaning of copyleft
GTK+ Toolkit New in Emacs 22

H
HarfBuzz New in Emacs 27
Hebrew, handling with Emacs Right-to-left alphabets
Help for Emacs Learning how to do something
Help installing Emacs Help installing Emacs
Help invoked by Backspace Backspace invokes help
Help system, entering the Basic editing
hide-ifdef, C/C++ expressions in macros New in Emacs 25
hide-ifdef-mode Hiding #ifdef lines
Hiding #ifdef text Hiding #ifdef lines
Highlighting and replacing text Replacing highlighted text
Highlighting based on syntax Turning on syntax highlighting
Highlighting matching parentheses Matching parentheses
horizontal scroll bars New in Emacs 25
horizontal scrolling of current line New in Emacs 26
How to submit a bug report Reporting bugs
HP-UX, the ExtendChar key ExtendChar key does not work as Meta
Hunspell Spell-checkers

I
Iconification under the X Window System Forcing Emacs to iconify itself
Ignored X resources Emacs ignores X resources
Ignoring case in searches Controlling case sensitivity
Included text prefix, changing Changing the included text prefix
Indentation, how to customize Customizing C and C++ indentation
Indenting new lines Automatic indentation
Indenting of switch Indenting switch statements
Index search in a manual Learning how to do something
Info file viewers Viewing Info files outside of Emacs
Info files, how to install Installing Texinfo documentation
Info, finding topics in Emacs manual
Informational files included with Emacs Informational files for Emacs
Init file debugging Debugging a customization file
Init file, errors in Errors with init files
Init file, setting up Setting up a customization file
Input, 8-bit characters Inputting eight-bit characters
Insert Overwrite mode
Installation help Help installing Emacs
Installing Emacs Installing Emacs
Installing Texinfo documentation Installing Texinfo documentation
intlfonts How to add fonts
Invalid prefix characters Invalid prefix characters
isearch yanking Yanking text in isearch
Ispell Spell-checkers

J
JSON, native parsing New in Emacs 27
Just-In-Time syntax highlighting Turning on syntax highlighting

K
Key bindings Key bindings
Key translations under X X key translations for Emacs
keyboard-translate Swapping keys
Keymaps and menus Modifying pull-down menus
Keys, binding to commands Binding keys to commands
Keys, swapping Swapping keys

L
Lacking an Escape key No Escape key
Large files, opening Problems with very large files
Latest FAQ version, obtaining the Obtaining the FAQ
Latest version of Emacs Latest version of Emacs
Learning more about Gnus Reading news with Emacs
Learning to do something in Emacs Learning how to do something
Length of tab character Changing the length of a Tab
Levels of syntax highlighting Turning on syntax highlighting
lexical binding New in Emacs 24
LFD, definition of Basic keys
line number display New in Emacs 26
Line number, displaying the current Displaying the current line or column
Line wrap Wrapping words automatically
line-number-mode Displaying the current line or column
Lisp forms, evaluating Evaluating Emacs Lisp code
Lisp packages that do not come with Emacs Packages that do not come with Emacs
load-path, modifying Changing load-path
loadable modules New in Emacs 25
Lookup a subject in a manual Learning how to do something
ls in Shell mode Escape sequences in shell output
Lucid Emacs Difference between Emacs and XEmacs

M
M-x, meaning of Extended commands
MACHINES, description of file Informational files for Emacs
Macintosh, Emacs for Emacs for macOS
macOS Cocoa New in Emacs 23
macOS, Emacs for Emacs for macOS
Mail alias expansion Expanding aliases when sending mail
Mail and news Mail and news
Mail reader, starting automatically Automatically starting a mail or news reader
Mail replies, inserting a prefix character Inserting text at the beginning of each line
Mail, saving outgoing automatically Saving a copy of outgoing mail
mail-yank-prefix Inserting text at the beginning of each line
Mailing lists, appropriate messages for Guidelines for newsgroup postings
Major mode for shell scripts Associating modes with files
Manual, obtaining a printed or HTML copy of Getting a printed manual
Matching parentheses Matching parentheses
Maximize frame Fullscreen mode on MS-Windows
Maximum file size Problems with very large files
Maximum line width, default value Wrapping words automatically
Menus and keymaps Modifying pull-down menus
Menus, creating or modifying Modifying pull-down menus
Menus, deleting Deleting menus and menu options
Meta key and xterm Meta key does not work in xterm
Meta key, notation for Basic keys
Meta key, what to do if you lack it No Meta key
Meta, using Compose Character for Compose Character
Meta, using ExtendChar for ExtendChar key does not work as Meta
Microsoft files, editing Editing MS-DOS files
Microsoft Windows, Emacs for Emacs for MS-Windows
Misspecified key sequences Invalid prefix characters
mode-line-format Displaying the current line or column
Modes, associating with file extensions Associating modes with files
Modifiers and function keys Binding combinations of modifiers and function keys
Modifying load-path Changing load-path
Modifying pull-down menus Modifying pull-down menus
Mouse wheel New in Emacs 22
movemail’ and security Security risks with Emacs
MS-DOS files, editing Editing MS-DOS files
MS-DOS, Emacs for Emacs for MS-DOS
Multi-tty support New in Emacs 23
Multilingual Environment New in Emacs 22
Multiple files, replacing across Replacing text across multiple files

N
New lines, indenting of Automatic indentation
New modes New in Emacs 22
New Texinfo files, installing Installing Texinfo documentation
News reader, starting automatically Automatically starting a mail or news reader
News replies, inserting a prefix character Inserting text at the beginning of each line
NEWS, description of file Informational files for Emacs
Newsgroups, appropriate messages for Guidelines for newsgroup postings
NeXTstep port New in Emacs 23
No Escape key No Escape key
No Meta key No Meta key
Not enough disk space to install Emacs Emacs for minimalists
Notation for keys Basic keys

O
Official GNU software sites Current GNU distributions
Old Usenet postings for GNU groups Newsgroup archives
One space following periods Filling paragraphs with a single space
Opening very large files Problems with very large files
Ordering GNU software Contacting the FSF
Origin of the term “Emacs” Origin of the term Emacs
Original version of Emacs Origin of the term Emacs
Overview of help systems Learning how to do something
overwrite-mode Overwrite mode
Overwriting existing text Overwrite mode

P
Package, finding Finding a package with particular functionality
packages, installing more New in Emacs 24
Packages, those that do not come with Emacs Packages that do not come with Emacs
Pairs of parentheses, highlighting Matching parentheses
paren.el Matching parentheses
Parentheses, matching Matching parentheses
pasting text on text terminals New in Emacs 25
Periods, one space following Filling paragraphs with a single space
picture-mode Forcing the cursor to remain in the same column
portable dumper New in Emacs 27
Posting messages to newsgroups Guidelines for newsgroup postings
Prefix character, inserting in mail/news replies Inserting text at the beginning of each line
Prefix characters, invalid Invalid prefix characters
Prefix in mail/news followups, changing Changing the included text prefix
Prefixing a region with some text Inserting text at the beginning of each line
Prefixing lines Automatic indentation
Previous line, indenting according to Automatic indentation
Printed Emacs manual, obtaining Getting a printed manual
Printing a Texinfo file Printing a Texinfo file
Printing documentation Printing a Texinfo file
Problems building Emacs Problems building Emacs
Producing control characters Producing C-XXX with the keyboard
project New in Emacs 25
Pull-down menus, creating or modifying Modifying pull-down menus

Q
Quoting in mail messages Changing the included text prefix

R
Reading news under Emacs Reading news with Emacs
Reading the Emacs manual Learning how to do something
Reading topics in the Emacs manual Emacs manual
Recognizing non-standard compiler errors Compiler error messages
Recompilation Going to a line by number
Recursive search/replace operations Replacing text across multiple files
Reducing the increment when scrolling Scrolling only one line
Reference card for Emacs Learning how to do something
Reference cards, in other languages Learning how to do something
Reference manual for Emacs Lisp Emacs Lisp documentation
Regexps Using regular expressions
Regexps and unprintable characters Working with unprintable characters
Regexps for recognizing compiler errors Compiler error messages
Regular expressions Using regular expressions
Remaining in the same column, regardless of contents Forcing the cursor to remain in the same column
Removing yourself from GNU mailing lists Unsubscribing from Emacs lists
Repeating commands many times Repeating commands
Replacing highlighted text Replacing highlighted text
Replacing newlines Searching for/replacing newlines
Replacing strings across files Replacing text across multiple files
Replacing, and case sensitivity Controlling case sensitivity
Replies to mail/news, inserting a prefix character Inserting text at the beginning of each line
Replying only to the sender of a message Replying to the sender of a message
Reporting bugs Reporting bugs
Repository, Emacs Latest version of Emacs
Resources, X Valid X resources
RET, definition of Basic keys
Richard Stallman, acronym for Common acronyms
Right-to-left alphabets Right-to-left alphabets
right-to-left languages New in Emacs 24
Rmail and /var/spool/mail Rmail writes to /var/spool/mail
rmail, and HTML mails New in Emacs 25
Rmail, replying to the sender of a message in Replying to the sender of a message
Rmail, sorting messages in Sorting the messages in an Rmail folder
RMS, definition of Common acronyms

S
Saving a copy of outgoing mail Saving a copy of outgoing mail
Saving at frequent intervals Disabling auto-save-mode
Scrolling only one line Scrolling only one line
Searching for newlines Searching for/replacing newlines
Searching for unprintable characters Working with unprintable characters
Searching without case sensitivity Controlling case sensitivity
Security with Emacs Security risks with Emacs
Selectively displaying #ifdef code Hiding #ifdef lines
Self-paced tutorial, invoking the Basic editing
Semitic alphabets Right-to-left alphabets
Sender, replying only to Replying to the sender of a message
Sending mail with aliases Expanding aliases when sending mail
Set number capability in vi emulators Displaying the current line or column
Setting the included text character Changing the included text prefix
Setting X resources Valid X resources
Shell buffer, echoed commands and ‘^M’ in ^M in the shell buffer
Shell Mode, problems Problems with Shell Mode
shell-mode and current directory Shell mode loses the current directory
Show matching paren as in vi Matching parentheses
Single space following periods Filling paragraphs with a single space
Slow catch up in Gnus Making Gnus faster
Sorting messages in an Rmail folder Sorting the messages in an Rmail folder
Source code, building Emacs from Installing Emacs
Sources for current GNU distributions Current GNU distributions
SPC file name completion SPC no longer completes file names
SPC, definition of Basic keys
Spell-checker Spell-checkers
Stallman, Richard, acronym for Common acronyms
Starting Gnus faster Making Gnus faster
Starting mail/news reader automatically Automatically starting a mail or news reader
Status of Emacs Status of Emacs
Stuff, current GNU Current GNU distributions
support for push commands in VC New in Emacs 25
Supported systems New in Emacs 22
Suspending Emacs Forcing Emacs to iconify itself
Swapping keys Swapping keys
switch, indenting Indenting switch statements
Symbols generated by function keys Working with function and arrow keys
Syntax highlighting Turning on syntax highlighting
Syntax highlighting on a TTY Colors on a TTY
Synthetic X events and security Security risks with Emacs
systemd support New in Emacs 26

T
Tab length Changing the length of a Tab
TAB, definition of Basic keys
tabs New in Emacs 27
TECO Origin of the term Emacs
Termcap Termcap/Terminfo entries for Emacs
Terminal setup code in .emacs Terminal setup code works after Emacs has begun
Terminfo Termcap/Terminfo entries for Emacs
Texinfo documentation, installing Installing Texinfo documentation
Texinfo file, printing Printing a Texinfo file
Text indentation Automatic indentation
Text strings, putting regexps in Using regular expressions
themes New in Emacs 24
threads New in Emacs 26
Titlebar, displaying the current file name in Displaying the current file name in the titlebar
Toggling overwrite-mode Overwrite mode
Toolbar support New in Emacs 21
Translations for keys under X X key translations for Emacs
TTY colors New in Emacs 21
Tutorial, invoking the Basic editing

U
Unbundled packages Packages that do not come with Emacs
Unicode New in Emacs 23
Unicode 11.0.0 New in Emacs 26
Unicode 9.0.0 New in Emacs 25
Unicode characters, typing easily New in Emacs 25
Unix regexps, differences from Emacs Using regular expressions
Unix systems, installing Emacs on Installing Emacs
Unprintable characters, working with Working with unprintable characters
Unsubscribing from GNU mailing lists Unsubscribing from Emacs lists
Up-to-date GNU stuff Current GNU distributions
Usenet archives for GNU groups Newsgroup archives
Usenet groups, appropriate messages for Guidelines for newsgroup postings
Usenet reader in Emacs Reading news with Emacs
Using an existing Emacs process Using an already running Emacs process

V
Variable documentation Emacs Lisp documentation
Variable-size fonts New in Emacs 21
Version, latest Latest version of Emacs
Vertical movement in empty documents Forcing the cursor to remain in the same column
Very large files, opening Problems with very large files
Viewing Info files Viewing Info files outside of Emacs
Visible bell Turning off beeping
Volume of bell Turning the volume down

W
w32-bdf-filename-alist How to add fonts
w32-find-bdf-fonts How to add fonts
Why Emacs? Origin of the term Emacs
Windows files, editing Editing MS-DOS files
Working with arrow keys Working with function and arrow keys
Working with function keys Working with function and arrow keys
Working with unprintable characters Working with unprintable characters
Wrapping lines Wrapping words automatically
Wrapping word automatically Wrapping words automatically

X
X and tty displays New in Emacs 23
X events and security Security risks with Emacs
X key translations X key translations for Emacs
X resources Valid X resources
X resources being ignored Emacs ignores X resources
X Window System and iconification Forcing Emacs to iconify itself
XDG convention New in Emacs 27
XEmacs Difference between Emacs and XEmacs
xref New in Emacs 25
Xterm and Meta key Meta key does not work in xterm
xwidgets New in Emacs 25

Y
Yanking text into the search string Yanking text in isearch

Z
Zile Emacs for minimalists

Jump to:   #   $   -   .   /   2  
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z  

[Top] [Contents] [Index] [ ? ]

Footnotes

(1)

DOSおよびWindowsの端末ではMetaキー押下時にビット7をセットしません。


[Top] [Contents] [Index] [ ? ]

Table of Contents


[Top] [Contents] [Index] [ ? ]

About This Document

This document was generated on December 5, 2021 using texi2any.

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ << ] FastBack Beginning of this chapter or previous chapter 1
[ < ] Back Previous section in reading order 1.2.2
[ Up ] Up Up section 1.2
[ > ] Forward Next section in reading order 1.2.4
[ >> ] FastForward Next chapter 2
[Top] Top Cover (top) of document  
[Contents] Contents Table of contents  
[Index] Index Index  
[ ? ] About About (help)  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:


This document was generated on December 5, 2021 using texi2any.