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] | [ ? ] |
これは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] | [ ? ] |
このチャプターではGNU Emacs FAQ、並びにEmacsドキュメントで使用する表記について説明します。これがFAQを読む最初の機会の場合、あるいはFAQで使用されている表記や用語について混乱したらこのセクションを参照してください。
• Basic keys | ||
• Extended commands | ||
• Emacs manual | ||
• File-name conventions | ||
• Common acronyms |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
M-x commandはM-xをタイプしてからコマンドの名前、その後にRETをタイプする(M-xやRETの意味があやふやならC-h、C-M-a、RET、ESC a等は何を意味するのか?を参照)。
(デフォルトでは)M-xはコマンドexecute-extended-command
を呼び出します。このコマンドによってコマンド名を覚えていれば任意のEmacsコマンドを実行できます。コマンド名を覚えることができなければ補完にはTABやSPC、利用可能なコマンドの一覧は?、以前に入力したコマンドの確認にはM-pとM-n(または上下の矢印)をタイプできます。Emacsのコマンド(command)とはインタラクティブ(interactive:
対話的)なEmacs関数のことです。
システム管理者によってexecute-extended-command
呼び出しが別のキーにバインドされているかもしれません。Doとラベル付けされたキーをもつようなキーボードなら、これを行うための良い候補になります。
非インタラクティブなEmacs関数の実行が必要ならEmacs Lispのコード片を実行(“evaluate”)するには?を参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
わたしたちが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] | [ ? ] |
これらはEmacsとともに配布されるファイルです。Emacsディストリビューションはetc、lisp、src等のサブディレクトリーに分かれています。これらの内のいくつか(etcやlispなど)はインストール済み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] | [ ? ] |
フリーソフトウェア財団(Free Software Foundation)
GNU’s Not Unix(GNUはUnixではない)
Richard Matthew Stallman
GNU 一般公衆利用許諾書(GNU GENERAL PUBLIC LICENSE)
フリーソフトウェア財団(Free Software Foundation)のタイトルにある“フリー(free)”とは、“ゼロコスト(zero cost)”ではなく“自由(freedom)”を意図した単語です。GPLの対象となるソフトウェアにたいして、もし望むなら誰でも対価を請求できます。とはいえ実際にはGPLが課した自由により、誰でもGPLソフトウェアの再販や譲渡を行う権利を有するので、常に誰か他の人からより少ない金額でソフトウェアを入手できることから低価格へとつながります。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このチャプターではEmacs、フリーソフトウェア財団や関連する組織にたいする一般的な問いが含まれています。
• Real meaning of copyleft | ||
• Guidelines for newsgroup postings | ||
• Newsgroup archives | ||
• Reporting bugs | ||
• Unsubscribing from Emacs lists | ||
• Contacting the FSF |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GNU 一般公衆利用許諾書、いわゆるGPL(コピーレフト)の真の法的な意味合いは、裁判官がその有効性と範囲を裁定した場合にのみ明らかになります。判例として定められるようなGPLが関与する著作権侵害の訴訟はこれまでに一度もありませんでした。GPL条件への違反によって企業への訴訟が起こされましたが、これまでのところすべてが法廷外で(原告に有利に)和解されています。この問題に関しての議論は、どうかこの問題について盛大に言い合うために作成されたニュースグループnews:gnu.misc.discussで行うようお願いします。
RMSは記しています:
GNUコピーレフトの法的な意味は、Emacsがフリーソフトウェアプロジェクトであり、Emacsに関連する作業もフリーソフトウェアであるべきだという精神ほど重要ではありません。“フリー(free)”とはすべてのユーザーがEmacsを学び、共有して、変更や改善を行う自由(freedom)をもっているという意味です。すべての人がこの自由を有することを保証するために、あなたがEmacsのあるバージョンや関連プログラムを配布する際には、それを受け取る人にソースコードも渡すことによって、あなたが楽しんだのと同じ自由を分け与えてください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacsメーリングリストはthe Emacs Savannah pageに記述があります。それらのうちのいくつかはニュースグループへゲートウェイされています。
Emacsプログラム全般に関する議論はニュースグループnews:comp.emacs、news: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] | [ ? ] |
網羅する範囲において意図せぬずれがあるかもしれませんが、FSFはGNUメーリングリストすべてのアーカイブを長年保守してきました。このアーカイブがthe GNU mail archiveでウェブ上で閲覧できます。
GoogleのようなウェブベースのUsenet検索サービスでもgnu.*
はアーカイブされています。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
コマンド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] | [ ? ] |
あなたがlistという名前のGNUメーリングリストからメールを受信しているなら、アドレスlist-request@gnu.orgにリクエストを送信すれば登録解除できるはずです。メーリングリストのメールには通常ならメッセージヘッダー(‘List-Unsubscribe:’)、あるいはフッターのいずれかに登録を解除する方法を告げる情報が含まれています。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
最新の情報はthe FSF contact web-pageを参照してください。一般的な対応ならinfo@fsf.orgに送信できます。
FSFに直接アイテムを注文する方法の詳細はFSF on-line storeを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このチャプターではEmacsでヘルプを得る方法について説明します。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
マイペースで学べるチュートリアルを呼び出すにはC-h tとタイプします。単にC-hとタイプすることでヘルプシステムにエンターします。このチュートリアルはEmacs 22以降はフランス語、ドイツ語、日本語、ロシア語等、英語以外の多くの言語で利用できるようになりました。言語を選んでチュートリアルを開始するにはM-x help-with-tutorial-spec-language RETとタイプしてください。
ローカルのキーボードを処理するために、C-hがDELのように振る舞うようにシステム管理者が変更しているかもしれません。ヘルプの呼び出しにはかわりに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] | [ ? ] |
Emacsで物事を行う方法を見つけるには複数の手法があります。
Info-goto-emacs-command-node
)はコマンド名の入力を求めて、そのコマンドの記述があるEmacsマニュアルのセクションの検索を試みます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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-buffer
とmakeinfoはどちらも実行結果のInfoファイルをEmacsのInfoツリーにインストールしません。Infoファイルをインストールするには以下の手順を行ってください:
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ファイル内の‘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-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] | [ ? ] |
Infoファイルから見栄えの良いプリント出力は得られません。マニュアルのプリント用には、依然としてオリジナルのTexinfoソースファイルが不可欠です。
システムにTeXがインストールされていれば以下のステップを行います:
\input texinfo
‘texinfo’をtexinfo.texファイルのフルパスに変更(またはカレントディレクトリーにコピーまたはリンク)する必要があるかもしれない。これはEmacsに同梱されているdoc/misc/texinfo.texである。
‘texi2pdf’の場合には、かわりにPDFファイルを生成する。
dvips
プログラムを実行する。
より一般的な手順については最新のTexinfoパッケージを調べてください(Texinfoドキュメントをインストールするには?を参照)。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
はい。以下はいくつかの候補プログラムです:
info
。詳細はTexinfoドキュメントをインストールするには?を参照のこと。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これはよくある質問ではありませんが、そうあるべきなのです! あなたに読んでもらうために、Emacsおよび関連するGNUプロジェクトの様相に関する様々な情報ファイルが利用可能です。
以下のファイル(やその他のファイルも)はEmacsディストリビューション(どこにあるか判らなければsrc/config.h、site-lisp/default.el等は何なのか?を参照)のetcディレクトリー内にあります。これらのファイルの多くはEmacsの‘Help’メニュー、あるいはC-h ? (M-x help-for-help)とタイプして利用することができます。
GNU 一般公衆利用許諾書(GNU GENERAL PUBLIC LICENSE)
Emacsの可用性に関する情報
様々なマシンおよびシステムにおけるEmacsの状況
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] | [ ? ] |
インストールにおける基本的なヒントについてはEmacsをインストールするには?、インストールに何か問題がある場合にはEmacsのビルドでトラブルに逢ったらどうすれば?を参照してください。
The GNU Service directoryにはEmacsやその他のGNUソフトウェアのインストールや使用において有償による手助けを提案する企業や個人が一覧されています。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このチャプターでは最新バージョンの状況も含めたEmacsに関する基本情報を提供します。
• Origin of the term Emacs | ||
• Latest version of Emacs | ||
• New in Emacs 27 | ||
• New in Emacs 26 | ||
• New in Emacs 25 | ||
• New in Emacs 24 | ||
• New in Emacs 23 | ||
• New in Emacs 22 | ||
• New in Emacs 21 | ||
• New in Emacs 20 |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.h、site-lisp/default.el等は何なのか?を参照)。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
Emacs 27における変更の完全なリストは、EmacsのNEWSファイル (C-h n)を参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
systemd
サポート。新たなコマンドラインオプション--fg-daemonはこのサポートの一部であり、forkせずにフォアグラウンドで--daemonと同じように実行される。
display-line-numbers-mode
コマンドを通じた行番号表示のためのオプション機能が含まれるようになった。この機能はlinum
のようなパッケージが提案するものと等価な表示をより高速に行い、更に相対的行番号など多くのオプション機能も提供する。
display
プロパティの保存ができた。これらのプロパティは任意のLispコードの評価をサポートしており、外部ソースからEnrichedテキストを受け取るEmacsユーザーを脆弱性に晒していた。Enriched
Textモードがデコードしたdisplay
プロパティ内の任意のLispフォームの実行はデフォルトで無効になった。
Emacs 26における変更の完全なリストは、EmacsのNEWSファイル (C-h n)を参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
global-eldoc-mode
がデフォルトで有効になり、ポイント位置にあるEmacs
Lispフォームの引数をエコーエリアまたはモードラインに表示するようになった。
push
コマンドを基本的にサポートするようになった。
#define
されたシンボルのスキャンにおいてすべてのC/C++式をサポートするようになった。
Emacs 25における変更の完全なリストは、EmacsのNEWSファイル (C-h n)を参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
lexical-binding:
t
を使用できる。詳細についてはEmacs Lispリファレンスマニュアルを参照のこと。
いつも通り詳細についてはNEWSファイルを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
他にもシリアルポートアクセスのサポート、D-Busバインディング、行移動における新たなVisual Lineモード、補完の改善、PDFやPostScript、DVIを閲覧するための新モード(‘DocView’)、(XMLドキュメント編集用の)nXMLモード、新しいバージョンコントロールシステム用にVCを更新する等の変更が含まれます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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の言語環境が追加された。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacs 21ではディスプレーエンジンの徹底的な書き換えが行われました。新たなディスプレーエンジンは可変長フォント、イメージをサポートするとともに、サウンドをサポートするプラットフォームでのサウンド再生が可能になりました。結果としてウィンドウ化されたディスプレーで実行した際のEmacsの視覚的外観はより現代的なGUIプログラムを想起させるものとなり、3Dウィジェット(モードラインとスクロールバーで使用)、設定と拡張が可能なツールバー、ツールチップ(別名バルーンヘルプ)、その他が含められました。
これらに加えてEmacs
21ではテキストオンリーの端末でのフェイスがサポートされました。これはGNU/Linuxコンソールやxterm
上でEmacsをemacs
-nwで実行した際にカラー表示されることを意味しています。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacsのバージョン18から19への変更はより劇的なものでした。一般的なユーザーのほとんどにとってもウィンドウシステムにおけるフレーム、フェイス、カラーの導入は明白な変更でした。
Emacsのバージョン19と20の間にも同様に変更はあるものの、その多くは軽微であるか気付くのが難しいものでした。この変更の中には非ラテン文字を使用する言語用のMULEと同一ドキュメント内での複数言語の混合、Lispを使用せずに変数を変更する“Customize”機能、Macintosh、Microsoft、Unixプラットフォームにおけるファイルの自動変換が含まれます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
コマンドラインオプション‘-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] | [ ? ] |
デフォルトでは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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
名前が拡張子.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] | [ ? ] |
以下の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] | [ ? ] |
変数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] | [ ? ] |
たとえばバッファーには‘\237’のように出現する単一文字はC-s C-q 2 3 7とタイプして検索できます。プリントできないすべての文字を検索するには正規表現(regexp)で行うのが最良です。プリント不可文字にたいするregexpは、プリント可能文字にたいする補集合を使用するのがもっとも簡単です。
isearch-forward-regexp
やre-search-forward
にたいする対話的な引数としてこれらのスペシャル文字をタイプするにはC-qを使う必要があります(‘\t’、‘\n’、‘\r’、‘\f’はそれぞれTAB、LFD、RET、C-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] | [ ? ] |
C-q C-jを使用してください。詳細についてはSpecial Input for Incremental Search in The GNU Emacs Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
M-yを使用します。Isearch Yank in The GNU Emacs Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
M-x
auto-fill-modeとタイプしてauto-fill-mode
を有効にして使用してください。デフォルトの最大行幅は70で、これは変数fill-column
により決定されます。これを自動でオンに切り替える方法についてはデフォルトでauto-fill-mode
をオンにするには?を参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
load-path
を変更するには?一般的にはload-path
へは追加のみにするべきです。以下のようにしてディレクトリー/dir/subdirをロードパスに追加できます:
(add-to-list 'load-path "/dir/subdir/")
ホームディレクトリーにたいして相対的にこれを行うには:
(add-to-list 'load-path "~/mysubdir/")
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
compilation-error-regexp-alist
変数をカスタマイズしてください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
Emacsのcc-mode
はインデントスタイルのカスタマイズ用に対話的な手順を提供しています。これはEmacsディストリビューションに同梱されているCC
Modeマニュアルに完全な説明があります。Customization
Indentation in The CC Mode Manualを参照してください。以下はそれの短い要約です:
0
余計なインデントなし。
+
基本オフセット1つ分インデントを加える。
-
基本オフセット1つ分インデントを戻す。
++
基本オフセット2つ分インデントを加える。
--
基本オフセット2つ分インデントを戻す。
*
基本オフセットの半分インデントを加える。
/
基本オフセットの半分インデントを戻す。
(c-set-offset 'syntactic-symbol offset)
ここでsyntactic-symbolは行頭でC-c
C-oをタイプした際にEmacsが表示した名前、offsetは上記のインデントシンボル(+
、/
、0
等)のいずれかのうち対話的手順の間に選択したシンボル。
以下のように(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] | [ ? ] |
M-x overwrite-mode
(マイナーモード)です。これはoverwrite-mode
のオンオフを切り替えるので、もう一度M-x
overwrite-modeとタイプすれば簡単にoverwrite-mode
からexitできます。
いくつかのシステムではInsertでoverwrite-mode
のオンオフが切り替わります。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
このような振る舞いは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] | [ ? ] |
.emacsファイルでshow-paren-mode
を呼び出します。
(show-paren-mode 1)
任意のEmacsフレーム上端にあるEmacsメニューバーの‘Options’メニューからオプション‘Paren Match Highlighting’を選択してこのモードを有効にすることもできます。
このようなモードの代替となる手段として以下が含まれます:
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] | [ ? ] |
#ifdef
処理後に残る行だけを表示するには?M-x hide-ifdef-mode (マイナーモード)です。Emacsに同梱されているcpp.elも調べてみたいと思うかもしれません。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
最後のコマンドを繰り返すにはrepeat
コマンド(C-x
z)を使用します。プレフィクス引数を前置すると、そのプレフィクスは繰り返すコマンドに適用されます。
引数を取得するためにミニバッファーを使用するコマンドは、C-x ESC ESC
(repeat-complex-command
)とタイプしても再呼び出しができます。repeat-complex-command
ではM-pとM-n
(キーボードにあれば上矢印と下矢印も)をタイプすることにより、様々なcomplexコマンドすべてでタイプしたものを走査することができます。
一連のコマンドを繰り返すにはキーボードマクロを使用します。コマンドを呼び出すキーボードマクロの作成にはC-x (とC-x )を使い、その後にC-x eとタイプします。Keyboard Macros in The GNU Emacs Manualを参照してください。
最後の挿入/削除を再実行するvi
の.
コマンドが本当に欲しくて堪らなければ、それをサポートしているよう思われるVIPERというEmacsに同梱のvi
エミュレーションモードを使ってください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
X Resources in The GNU Emacs Manualを参照してください。
EmacsがXツールキットとともにコンパイルされていると仮定して、メニューバーのリソース名を確認するためにeditres(X11R5以降)のようなリソースエディターを使用することもできます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacs Lispのフォーム(form)を実行(Lispスラングではevaluate: 評価)するには:
emacs-lisp-mode
ではC-M-xとタイプすることでポイントの前、または周辺にあるトップレベルのフォームを評価する。
load
を使う)。
関数load-library
、eval-region
、eval-buffer
、require
、autoload
も有用。これらについての詳細はEmacs Lispではどこでドキュメントを入手すれば?を参照のこと。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
変数tab-width
のデフォルト値をセットします。たとえば10文字ごとにTABストップをセットするには、.emacsファイルに以下を挿入してください:
(setq-default tab-width 10)
変数tab-width
と変数tab-stop-list
を混同しないでください。前者はリテラルのTAB文字の表示に使用されます。一方後者は特定のモードにおいてTAB文字を押下した際にどの文字が挿入されるかを制御します。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これをバッファー全体にたいして行う場合には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] | [ ? ] |
M-x picture-modeを使用します。
変数track-eol
、およびC-x C-nにバインドされているコマンドset-goal-column
(Moving Point in The GNU Emacs Manualを参照)も確認してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
C-zはEmacsをXで実行中ならアイコン化、それ以外ならEmacsをサスペンドします。Frame Commands in The GNU Emacs Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Regexp Backslash in The GNU Emacs Manualを参照してください。
演算子or
は‘|’ではなく‘\|’、グルーピング演算子は‘\(’と‘\)’です。更にバックスラッシュの文字列構文は‘\\’です。Lisp文字列で‘xxx\(foo\|bar\)’のような正規表現を指定するには‘xxx\\(foo\\|bar\\)’を使用します。
バックスラッシュを2回記述することに注意してください!
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Diredモード(M-x dired RETまたはC-x
d)は、コマンドdired-do-find-regexp-and-replace
(Q)をサポートしています。これは複数ファイルにおける正規表現の置換を可能にします。
以下のステップにしたがうことにより、このコマンドで複数ファイルにたいする検索/置換処理を行うことができます:
find-dired
、find-name-dired
、find-grep-dired
のいずれかを使って、処理したいファイルのリストを用意する。
query-replace-regexp
セッションを開始する。
Emacsの“tags”機能を使用して、別の方法で同じこと行うことができます。tags機能に含まれているコマンドtags-query-replace
はTAGSファイルに記述されたすべてのファイルを横断してquery-replace(問い合わせ付き置換)を行います。Identifier
Search in The GNU Emacs Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
etags
のドキュメントはどこ?etags
のmanページはemacs
のmanページと同じ場所にあるはずです。
たとえば‘etags -H’のように、コマンドラインスイッチで手早く読める説明もあります。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
何か不幸な出来事が起こったとき等は、特にバックアップが役立つので多分これを行いたいとは思わないでしょう。
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] | [ ? ] |
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] | [ ? ] |
行番号で行に移動する必要があるのは確かですか? もしかしたらコンパイラーがエラーメッセージをプリントしたソースファイル行を表示するのがあなたの望んでいることではありませんか? もしそうなら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] | [ ? ] |
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-name
、ps-lpr-command
、ps-lpr-switches
のドキュメントを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
M-x customize-variable RET scroll-conservatively
RETでscroll-conservatively
をカスタマイズして大きな値、たとえば10000にセットしてください。これが何を意味するかについては、Auto
Scrolling in The GNU Emacs Manualの説明を参照してください。
かわりに.emacsで以下のLispフォームを使うこともできます:
(setq scroll-conservatively most-positive-fixnum)
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
MS-DOS (およびWindows)のファイルの検出と処理は透過的に行われます。Unixシステム上でファイルフォーマットについて心配するなくMS-DOSファイルのオープン、編集、保存を行うことができます。
MS-DOS形式ファイルの編集時には、それがDOSファイルであることが示されます。UnixとGNU/Linuxシステム、およびMacintoshでもモードライン左端付近に文字列‘(DOS)’が表示されるでしょう。DOSのEOLフォーマットをデフォルトとして使用するDOSおよびWindowsでは、モードラインにバックスラッシュ(‘\’)が表示されます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下の行を.emacsファイルに追加してください:
(setq sentence-end-double-space nil)
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
それらを取り除くには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] | [ ? ] |
これはEmacsが間違った場所でシェルを探そうとして起こるかもしれません。シェル実行形式の場所をあなたが知っていたら、.emacsファイルで変数explicit-shell-file-name
がそのフルファイル名を指し示すようにセットしてください。
MS-Windows上のShellモードでお節介なアンチウイルスソフトウェアによりトラブルに遭う人がいます。このようなケースでは常駐アンチウイルスプログラムを無効にすると問題は解決するでしょう。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
端末タイプ‘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] | [ ? ] |
あなたの.emacsファイル、あるいはシステムワイドファイルsite-lisp/default.elのロード中にエラーが発生したためです。Emacs 21.1以降では*Messages*バッファーがポップアップして、そこにデバッグ用のヒントを与えるためのエラーに関する追加情報を書き込みます。
あなたの.emacsファイルをデバッグする方法については.emacsファイルをデバッグするには?を参照してください。
まず何らかのパッケージのロードが必要だったり、そあるいはパッケージのロード後に評価されるフックを使用したのかもしれません。このよくあるケースについてはEmacs起動後でなければ.emacsファイルの[端末やウィンドウシステム]のセットアップコードが機能しないのはなぜ?に記述があります。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacsは以下の環境変数が指定するファイルからXリソースを検索します。
XFILESEARCHPATH
XUSERFILESEARCHPATH
XAPPLRESDIR
これはXツールキットを使用して記述されたプログラムが提供する機能をエミュレートします。
XFILESEARCHPATH
とXUSERFILESEARCHPATH
はコロンで区切られたファイル名のリスト、XAPPLRESDIR
はコロンで区切られたディレクトリーのリストです。
Emacsは以下のようにXリソースを検索します:
LANG
の値)
LANG
がセットされていれば) ~/lang/Emacsの中から
XFILESEARCHPATH
にリストされたファイルの中から
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これが発生したのは恐らく変数initial-frame-alist
でフレームパラメーターをセットしたからです。この変数にはEmacs起動時に作成された最初のフレームに使用されたパラメーターだけが保持されています。すべてのフレームのパラメーターをカスタマイズするためには、かわりにdefault-frame-alist
を変更してください。
これらの2つの変数が存在するのは、多くのユーザーが特別な方法で初期フレームをカスタマイズするからです。たとえば初期フレームの位置とサイズを判断することができ、かつ他のフレームについてはそれぞれを個別に配置してジオメトリを制御したいような場合です。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ミニバッファーでファイル名を入力する際に単語の前に‘$’があると、Emacsは環境変数としてそれの展開を試みます。この挙動を抑止するにはかわりに$$とタイプしてください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacsには実際にシェルが自身のディレクトリーを変更したタイミングを知る手段がありません。これはUnixに内部の制限です。そのためにEmacsは‘cd’コマンドを識別して推測を試みます。変数リファレンスを含むディレクトリーが後に続くcd (cd $HOME/bin)やシェルのメタ文字を含むディレクトリー(cd ../lib*)をタイプすると、Emacsはシェルの新たなカレントディレクトリーの正確な推測に失敗するでしょう。Shellモードにおけるこの問題を処理するために、膨大な数の様々な訂正や改善が記述されてきました(XXXを行うEmacs Lispパッケージを見つけるには?を参照)。
コマンドM-x dirsでシェルのカレントディレクトリーをEmacsに伝えることができます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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を参照のこと。
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] | [ ? ] |
Diredはファイル名の先頭を見つけるために正規表現を使用します。Unix形式の長いディレクトリーリスト(‘ls -l’)では、ファイル名は日時の後で始まります。したがってこのregexpは日時を探すように記述されています。デフォルトでは言語に関わらず日付と時刻を認識して然るべきですが、あなたのディレクトリーリストが通常のフォーマットでなければDiredが混乱するかもしれません。
これを解決するには2つのアプローチがあります。1つ目には‘ls -l’の出力がより標準的なフォーマットになるように設定を行うことです。詳細はあなたのOSのマニュアルを参照してください。
2つ目のアプローチはDiredが使用する正規表現directory-listing-before-filename-regexp
を変更することです。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
• Installing Emacs | ||
• Problems building Emacs |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この回答は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を読んでください。要約すると:
https://ftp.gnu.org/pub/gnu/emacs/emacs-VERSION.tar.gz
(‘VERSION’は‘23.1’のように適切なバージョン番号に置き換えること。)
gzip
とtar
が必要。これらがシステムになければhttps://ftp.gnu.orgからダウンロードできる。
GNU tar
なら一度に解凍抽出ができる:
tar -zxvf emacs-VERSION.tar.gz
cd emacs-VERSION ./configure # 特定システム向けにEmacsをconfigure make # Makefileを使ってコンポーネントをビルド、Emacsを使用する
make
が正常に完了したら、ビルドがうまくいった公算はかなり高い(不成功ならEmacsのビルドでトラブルに逢ったらどうすれば?を参照)。
make install
‘make install’によって/usr/local/bin/emacsや/usr/local/share/info/にあるかもしれないEmacs Infoファイルは上書きされることに注意。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
まずはあなたの問題にたいする解決策があるかを確認するために、(Emacsソースを解凍した場所にある)ファイルetc/PROBLEMS調べてください。次にこのFAQからEmacsのインストールやコンパイルの問題に関連する他の問答を探してください。
あなたの問題を誰かに見てもらって解決の助けとしたいなら、Emacsのインストールでどこに助けを求めれば?を参照してください。
ドキュメントから解決策が見つからない場合には、どうかその問題をレポートしてください(Emacsのバグやその他の問題はどこにレポートすれば?を参照)。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
対話的に、あるいは.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)))
(global-unset-key [?\e ?{]) ;; または (local-unset-key [?\e ?{])
(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] | [ ? ] |
通常は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] | [ ? ] |
スタートアップの間、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] | [ ? ] |
C-h cの後にファンクションキーか矢印キーをタイプしてください。コマンドはファンクションキーシンボルか文字シーケンスをリターンするでしょう(説明はEmacsドキュメントを参照)。これは他のキーでも同様に機能します。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
(ほとんどのキーボードでは)BackspaceキーはASCIIコードの8を生成します。C-hが送信するコードも同じです。EmacsではデフォルトではC-hはhelp-commandを呼び出します。これは‘help’の最初の文字が‘h’なので簡単に覚えられることを意図したものです。この問題のもっとも簡単な解決策はヘルプにはC-h (とBackspace)を使い、前の文字の削除にはDEL(Deleteキー)を使うことです。
多くの人たちにとって、この解決策は問題があるかもしれません:
stty erase '^?'
normal-erase-is-backspace-mode
のカスタマイズ、またはM-x
normal-erase-is-backspace呼び出しにより、ダム端末およびウィンドウ化されたディスプレーの両方において、BackspaceキーおよびDeleteキーの効果を制御できる。これらのシンボルのドキュメントについてはEmacs Lispではどこでドキュメントを入手すれば?を参照のこと。
(keyboard-translate ?\C-h ?\C-?)
これはたとえDELをdelete-backward-char
以外の何かにバインドするモードでも機能するので、BackspaceをDELのように動作させる際の推奨方法である。
同じようにDELがC-d (デフォルトでは前方に削除)のように振る舞うようにリマップできる:
(keyboard-translate ?\C-? ?\C-d)
keyboard-translate
についての詳細は2つのキーを入れ替えるには?を参照のこと。
(global-set-key "\C-h" 'delete-backward-char) ;; mark-whole-bufferをオーバーライドする (global-set-key "\C-xh" 'help-command)
とはいえこの手法は推奨しない。これはDELをdelete-backward-char
にバインドするモードにたいしてのみ問題を解決する。view-mode
モードのようにDELを別の何かにバインドするモードは、Backspaceキーを押下した際に期待通り動作しないだろう。この理由により、わたしたちは上述したkeyboard-translate
手法をお勧めする。
ヘルプ用として他に人気のあるキーバインディングはM-?とC-x ?である。
DELにたいしてローカルバインディングをもつモードが多数あり、それらと干渉するかもしれないので、DELにhelp-command
をバインドしようとしてはならない。
ウィンドウ化されたディスプレーでEmacs 21以降を実行する場合には、これらのシステムでのキーボード操作とEmacsの矛盾が少なくなるように、Deleteをポイント位置の文字を削除するコマンドにバインドします。
この問題の解決についての詳細はIf DEL Fails to Delete in The GNU Emacs Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
keyboard-translate
を使用して2つのキー(またはキーシーケンス)を交換できます。たとえばC-hをDEL、DELをC-hにするには、
(keyboard-translate ?\C-h ?\C-?) ; 'C-h'をDELに変換 (keyboard-translate ?\C-? ?\C-h) ; DELを'C-h'に変換
関数の後のキーシーケンスの1つ目はキーボードが何を生成するかを識別、2つ目はキーマップでそれが何にマッチするかを指定します。
しかしC-hとDELの特別なケースにおいては、keyboard-translate
呼び出しではなくnormal-erase-is-backspace-mode
を切り替えるべきです。DEL
Does Not Delete in The GNU Emacs Manualを参照してください。
キーボードの変換(translation)はキーマップのキーバインディングと同じではありません。Emacsには異なる状況に適用するために数々のキーマップがありますが、キーボード変換は1セットしかなく、Emacsが端末から文字を読み取るたびにそれが適用されます。キーボード変換は入力プロセスのもっとも低いレベルで行われます。キーマップに照合される文字にはキーボード変換された結果の文字が含まれています。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(X配下ではない)端末で一般的ないくつかの“エイリアス”です:
C-@
C-^
C-_
C-\
C-]
C-?
多くの場合は他にもエイリアスが存在します。あなたのキーボードでC-h cコマンドを使って、CTRLとすべての数字を試して何が生成されるか確認してみてください。コマンド名が判っていればC-h wコマンドを試してみることもできます。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
多くのキーボードでは、AltキーはMetaのように振る舞うので試してみてください。
M-aのかわりにESC
aとタイプすることができます。実際のところ、いずれにせよEmacsは内部でM-aをESC
aに変換しています(meta-prefix-char
の値による)。Metaとaは一緒に押しますが、ESCの場合にはESCを押して離した後にaを押下することに注意してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
かわりにC-[をタイプしてください。これはエスケープキーのようにASCIIコードの27を送信するはずです。C-3でも機能する端末もあります(X配下でないこと)。多くの端末(特にDEC)では、F11がESCを生成します。そうでなければ以下のフォームを使用してこれをバインドできます:
;; DEC端末ではF11はESCの置き換えとドキュメントされている (define-key function-key-map [f11] [?\e])
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
VT220のようなダム端末ではできません。噂では特定のVT220クローンは、この方法で設定することによって独自にComposeキーをもてるようです。Xを使用していればxmodmap
コマンドでこれを行うことができるかもしれません。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ファンクションキーのシンボルにプレフィクスを追加することによって、ベクターフォーマットで修飾されたファンクションキーを表すことができます。たとえば(Emacsドキュメントより):
(global-set-key [?\C-x right] 'forward-page)
ここで‘?\C-x’は文字C-xにたいするLisp文字定数です。
ファンクションキーとともにControl、Meta、Hyper、Super、Alt、Shiftの修飾キーが使用できます。これらの修飾キーを表現するにはシンボル名の前に‘C-’、‘M-’、‘H-’、‘s-’、‘A-’、‘S-’を前置します。以下はH-M-RIGHTを単語1つ前方に移動にする方法です:
(global-set-key [H-M-right] 'forward-word)
キーバインディングについての一般的な説明についてはキー(ファンクションキー含む)をコマンドにインストールするには?を参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
xterm
ウィンドウでMetaキーが機能しないのはなぜ?Single-Byte Character Set Support in The GNU Emacs Manualを参照してください。
Emacsマニュアルのアドバイスが失敗した場合には、更なる助けを求める前に以下の方法すべてを試してみてください:
mwm
を使用することによって大きな問題を抱えているのかもしれない(mwmのEmacsでMetaキーが使用できるようにする汎用的で優れた解決策を知る人は居るのだろうか?)。
xev
を使用する。Meta_L
かMeta_R
のいずれかのはずだが、もし違うならこの状況を修整するためにxmodmapを使用できる。MetaはMeta_L
やMeta_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’引数を与える必要があるかもしれない。
(set-input-mode t nil)
の評価が助けになると報告されている。
xterm
にESC
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] | [ ? ] |
これはX11R4における国際化拡張の結果であるとともに、HPが現在はこの拡張を使用しているという事実を示しています。EmacsはMetaキーの状態に関わらずXLookupString
関数が同じ結果をリターンするという、もはや必ずしも真とは言えない前提にもとづいています。Emacsが修整されるまでは、その場しのぎの一時的な修整ですがXサーバー起動後に毎回、できればxtermクライアント開始前に以下のコマンドを実行してください:
xmodmap -e 'remove mod1 = Mode_switch'
これはシステムワイドで追加のkeysymを無効にします。これはあなたが実際にそれらを使用つもりなら不本意かもしれません。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacs 22.1からSPCはミニバッファーでファイル名の補完を行わなくなったので、スペースが埋め込まれたファイル名のタイプにおいてスペースをクォートする必要がなくなりました。
以下のようにミニバッファーでSPCをminibuffer-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] | [ ? ] |
• Emacs does not display 8-bit characters | ||
• Inputting eight-bit characters | ||
• Right-to-left alphabets | ||
• How to add fonts |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
8ビット文字の入力には様々なメソッドが利用できます。Single-byte Character Set Support in The GNU Emacs Manualを参照してください。より洗練されたメソッドについてはInput Methods in The GNU Emacs Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
バージョン24.1以降のEmacsではアラビア語、ペルシア語、ヘブライ語のような双方向スクリプト(bidirectional script)の表示と編集がサポートされています。bidirectional displayを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
まず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] | [ ? ] |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
メールを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] | [ ? ] |
メールメッセージの‘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] | [ ? ] |
The Emacs Manual in The Emacs Manualを参照してください。
(add-hook 'mail-mode-hook 'mail-abbrevs-setup)
エイリアスは単語区切り文字(RETや,)をタイプした後でのみ自動的に展開される。エイリアス終端にポイントを移動してC-x a e (M-x expand-abbrev)をタイプして強制的に展開させることができる。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Rmailでソート関数とそれらのキーバインディングのリストを得るにはC-c C-s C-hとタイプします。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これはRmailが使用するmovemail
プログラムの振る舞いです。これはmovemail
がロックファイルを使うように設定されていることを示しています。
RMSは記しています:
特定のシステムではメールファイルへのアクセスをインターロックするためにロックファイルが必要です。これらのシステムでは
movemail
はロックファイルに書き込まなければなりません。さもないとメールを失うリスクがあるからです。あなたはただmovemail
にロックファイルを書き込ませるようアレンジしなければなりません。他のシステムではインターロックアクセスのために
flock
システムコールを使用します。これらのシステムではflock
を使用するようにmovemail
を設定するべきです。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
EmacsをGnusで開始するには:
emacs -f gnus
Rmailでは:
emacs -f rmail
Gnusでより便利に開始するには:
alias gnus 'emacs -f gnus' gnus
.emacsファイルから自動的にメールやニュースを開始するのは、恐らく賢明ではないでしょう。これは同時に2つのEmacsを実行する必要がある場合には問題を起こすかもしれません。更に必要な際に素早くEmacsを開始するのが困難になるかもしれません。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
M-x gnusを使用します。the Gnus FAQ in The Gnus Manualに含まれているthe Gnus Manual in The Gnus Manualを参照してください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus FAQ(Emacsでニュースを読むには?を参照)から引用します:
古いマシンの場合、あるいは実際にじれったいだけなら、Gnusの実行を高速にするためにできることがあります。
起動をより高速にするためには
gnus-check-new-newsgroups
とgnus-check-bogus-newsgroups
にnil
をセットしてください。summaryバッファーへの出入りをより高速にするために
gnus-show-threads
、gnus-nov-is-evil
、gnus-use-cross-reference
にnil
をセットしてください。
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [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 |
---|
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] | [ ? ] |
auto-fill-mode
をオンにするには?load-path
を変更するには?switch
のインデントを変更するには?#ifdef
処理後に残る行だけを表示するには?etags
のドキュメントはどこ?auto-save-mode
を無効にするには?ls
は奇妙なエスケープシーケンスを出力するのか?xterm
ウィンドウでMetaキーが機能しないのはなぜ?[Top] | [Contents] | [Index] | [ ? ] |
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.