Emacsはじめの一歩
Emacsとは何か知りたいときは、WikiPedia:Emacsを見てください。
Emacs には標準で「チュートリアル」が含まれています。ひととおりチュートリアルを終えるのにそれほど時間は掛かりませんし、これをこなせばより効率的に Emacs が使えるようになるでしょう。チュートリアルの開始方法は次のとおりです。
‘C-h t’
と入力してください。これは、「コントロールキー(Ctrl)を押したまま‘h’
を押し、次にコントロールキーを離して‘t’
を押す」と言う意味です。‘F1 t’
を試してください。‘M-x help-with-tutorial’
を試してください。これは「エスケープキー(Esc)を押して、‘x’
を押して、そして"help-with-tutorial"と入力して、エンターキーを押す」という意味です。Emacsは当てにならない、というわけじゃないんです。 – キーシーケンスは、Xウィンドウや、コンソール、ターミナルエミュレータやssh越しなど多様なので、‘C-h’
や‘F1’
の動作は環境によって異なる場合があるんです。
チュートリアルを英語以外の言語で読むには、‘help-with-tutorial-spec-language’
コマンドを使ってください。これは「メタキー(Alt)を押しながら‘x’
を押して、’Alt’を放してから‘help-with-tutorial-spec-language’
と入力する」ということです。 現在、使用できる言語は次のとおりです: bg, cn, cs, de, es, fr, it, ja, ko, nl, pl, ro, ru, sk, sl, sv, th, zh
この項目ではEmacsの一般的な使い方について取り上げます。Emacsのマニュアルから基本的な考え方と使用上の注意を紹介します。もっとも、マニュアルそれ自身(‘C-h i’
)を読めば、Emacsと関連することがらがすべてわかるのですが。 – ただし、Emacs用語(ジャーゴン)だけはマニュアルに含まれていません。
Emacsドキュメント中の表記の意味:
‘Alt’
と書いてあるキーのことです。‘Backspace’
, ‘BS’
)のことです。デリートキー(‘Del’
)ではありません。‘Enter’
, ‘Return’
)のことです。‘Esc’
, ‘Escape’
)のことです。‘Tab’
)のことです。“C-M-“や"M-C-“のような組み合わせは、コントロールキーとメタキーを一緒に押しっぱなしにするという意味です。
Emacs用語の対応表(一般的な用語/ジャーゴン):
一般的な用語 | Emacs語 |
選択範囲・選択部分 | リージョン |
切り取り | キル・kill |
貼り付け | ヤンク・yank |
ウィンドウ | フレーム |
ショートカットキー | キーシーケンス |
Emacs用語の意味:
注記: メニュー項目の選択とマウス操作はキーシーケンスとして扱われることもあります。 キーシーケンスを入力するべきときに、キーボードの代わりにメニュー項目を選択したり、マウスを操作する(「MB1をクリックする」など) ことがあります。
“ポイント"と"マーク"については、リージョン(テキストの選択)で詳しく説明します。さらにいろいろなEmacs用語の定義が知りたいときは、CategoryGlossaryを参照してください。
次の文例の意味がわかるなら、もうEmacs語を理解してるってこと。ここに書かれてるすべての操作について理解したら、どういう風にEmacsを使えばよいかがだいたいわかるはず。 Good luck :D !
foobar
を保存する時に使うキーシーケンスは‘C-x C-s’
で、コマンド‘save-buffer’
に割り当てられている。‘split-window-horizontally’
というコマンドを実行したいのだが、“キーバインディング"も完全な名前も忘れてしまったので、キーシーケンスの‘M-x’
(Alt キーを押しながらx
を入力)を使い、その後、 s-p-l-i-t---w-i-n
とタイプした。入力内容は"ミニバッファ"に表示された: split-win
。TAB
を入力するとミニバッファの入力がsplit-window
に展開された。これは、“split-window"で始まる名前のコマンドが存在することを意味するTAB
を入力するとミニバッファは”[Complete, but not unique]
“と返答してきた。これで、“split-window"は完全な名前だけど、他にも"split-window"で始まる名前のコマンドがあることがわかる。TAB
と入力する。こうすると、同じのフレームに新しいウィンドウが開いて、*Completions*
バッファが表れ、そこに"split-window"で始まる名前のいくつかのコマンドが表示される。MB2を使ってコマンド名split-window-horizontally
をクリックする。*Completions*
バッファ(とそのウィンドウ)は姿を消し、操作中のフレームが二つのウィンドウに分割されて、両方にバッファfoobar
が表示される。これはバッファのウィンドウfoobar
でsplit-window-horizontally
コマンドが実行された結果だ。‘split-window-vertically’
を使って分割する。今回は、たまたまキーシーケンス‘C-x 2’
というキーバインディングを覚えていたので、これを使った。この時点で、このフレームは3つのウィンドウを持ち、それぞれにfoobar
が入った状態となった。それぞれのウィンドウのmode-lineに"foobar"という名前が表示されているのが確認できる。‘C-x C-f’
を使って、toto
ファイルを開いた(このキーシーケンスは、‘find-file’
コマンドに結びつけられている)。ウィンドウのモードライン部分が変わったので、そのバッファがtoto
に変わったことが確認できた。僕はフレームでバッファtoto
ウィンドウサイズを変えるために、MB1を使ってモードラインをドラッグした。toto
バッファ内では、テキストの一部分を MB1 を押しながらドラッグし、新たに リージョン を指定した。それから、キーシーケンス ‘C-w’
を使って、 そのリージョンのテキストを キル した。foobar
内で MB1 をクリックした。これによってカーソルがポインターの位置に移動した。 それから、toto
バッファでキルしたテキストをfoobar
バッファのポイントの位置にヤンクした。練習問題: 上記の例を、(Emacs用語ではなく)一般的な用語を使って言い替えてください。
‘C-g’
を使えば、実行途中のアクションを中止(アボート)することができます。ただし、アクションの種類によっては、‘C-g’
を何度か繰り返し入力する必要があります (‘C-g’
を使っても完全にキャンセルされない場合は、`C-]’ または ‘top-level’
コマンドを使ってください。 これでなんとかなるはずです)。
例 1: ‘M-x some-command’
というコマンドを入力しました。RET
を使ってコマンドを確定する前に ‘C-g’
を入力すると、先ほど開始したコマンド入力がキャンセルされます。
例 2: ‘M-x some-command’
を入力したところ、実行が開始されました。しかし、どうやら実行には時間がかかるようであり、また、どのような内容が実行されるのかについて自信がありません。このような場合も、‘C-g’
を使うと、コマンドの実行をキャンセルできます。
すべてのEmacs helpを利用するには、‘C-h C-h’
(‘help-for-help’
) を使ってみてください。‘Help’
メニューを利用することもできます。 EmacsManual を利用するには、 ‘Help’
> ‘Info’
> ‘Emacs’
を選択します。
次に、便利なヘルプ コマンドを紹介しておきます (ヘルプコマンドについては、‘C-h C-h’
経由で調べることもできます):
‘describe-key’
) - キーボード操作、メニュー、マウス操作によって実行されるコマンドについて、説明を表示する。キーシーケンスを入力すると、それに関連づけられた動作内容が表示される。‘where-is’
) - 指定したコマンドと関連づけられた、キーボード操作、メニュー項目、マウス操作を一覧表示する。 ‘C-h k’
の逆。‘describe-function’
) - コマンドやその他の機能についての説明を表示する。‘apropos’
) - 指定された文字列を含むすべてのコマンドを一覧表示する。 例: ‘C-h a file’
を実行すると、名前に"file” という文字列を含むコマンドがすべて表示される。‘describe-mode’
) - カレント バッファのモードを表示する。ここには、このバッファで利用できるキーバインディングやコマンドのうち特に重要なものや、 その他のバッファ固有情報が含まれます。‘info’
) - ドキュメントブラウザであるInfoが表示されます。ここから、EmacsManual (さらに、その他のドキュメント) を利用することができます。 Emacs にはいくつもの コマンド があり、コマンドの中には キーシーケンス に関連づけられているものがあります。たとえば、「カーソルを1文字分前に進める」という意味の‘forward-char’
コマンドは、‘C-f’
というキーシーケンスに結びつけられています。
キーシーケンスは、‘C-x C-c’
のように複数の「キーの組合せ」で構成されていることがあります。また、キーシーケンスの構成要素は、キーボードのキーに限られているわけではありません。マウス操作やメニュー項目の選択なども、キーシーケンスとみなされます。
‘indent-code-rigidly’
コマンドは、(デフォルトでは)どのキーシーケンスにも対応づけられていません。 ‘grep’
コマンドは、(デフォルトでは)どのキーボードによるキーシーケンスにも対応づけられていませんが、メニューバーによるキーシーケンス 「‘Tools’
> ‘Search Files’
」 (= [menu-bar tools grep])に対応づけられています。.対応するキーシーケンスが存在するか否かにかかわらず、すべてのコマンドは ‘M-x’
経由で実行することができます。たとえば、‘M-x grep’
によって ‘grep’
コマンドが実行されます。
‘M-x’
を入力した後、‘M-p’
(previous) を入力すると、以前実行したコマンドを呼び出されるので、これを編集したり再実行することができます。コマンドの履歴を先に進むには、‘M-n’
(next) を使います。より高度なコマンド編集方法については、‘C-x ESC ESC’
を参照してください。
ユーザーは、好きなコマンドを好きなキーシーケンスに割り当てることができます。先ほど、「‘indent-code-rigidly’
コマンドは、(デフォルトでは)どのキーシーケンスにも結びつけられていません」と述べたのはそのためです。 また、すべてのキー割り当ては、ユーザーが自由に解除できます。
コマンドの動作によっては、コマンドの入力欄であるミニバッファにユーザーがテキストを入力しなければいけないことがあります。このとき、最初から入力欄にデフォルトのテキスト(たいていの場合は、カーソル位置の前後にあるテキスト)が与えられている場合があります。このテキストは自由に変更して利用することもできますが、‘M-C-DEL’
または ‘C-x DEL’
を使うと、このテキストを即座に消去することができます。‘RET’
で確定したのち、好きなテキストを入力してください。
たとえば、‘grep’
(メニューから ‘Tools’
Files’ を選択、または、‘M-x grep’
を実行)を実行すると、バッファに検索するテキストと検索対象とするファイル名のパターンを入力するよう求められます。デフォルトでは、このコマンドは、カーソルの前後にあるテキストを検索対象テキストとして表示します。このテキストがあなたの検索したい文字列ではなかった場合は、‘M-C-DEL’
(または、‘DEL’
を何度も) 押し続けて、ミニバッファからテキストを消去した後、検索するテキスト、検索対象ファイル名のパターンを入力して、‘RET’
を押してください。
すべてのバッファには、固有の編集モード (バッファ固有のコマンドとキーバインディング)が存在します。 バッファの現在のモードに関する情報は、‘Help’
メニューの‘Describe Mode’
(または‘C-h m’
)を使って調べることができます。
注意: Lisp:menu-bar+.el ライブラリ( DrewAdams 作)を使っている場合は、バッファ固有メニューは全体メニューと分離した状態で表示されます。具体的には、バッファ固有メニューはセパレータ”||“の左に、その他のすべてのモードに共通するメニュー(‘Buffers’
、‘Files’
、‘Tools’
、‘Edit’
、‘Search’
、‘Frames’
、‘Help’
)はセパレータ”||“の右に配置されます。そして、セパレータをクリックすると、”← Current mode menus to left. || Common menus to right →”(訳注:「現在のモードに対するメニューは左||共通メニューは右」)と表示されます。
(Lisp:doremi-frm.el または Lisp:doremi-cmd.el をロードしている場合は、FramesメニューとHelpメニューの間に、Do Re Miメニューが表示されます。
すべての操作は‘Edit’
メニューの‘Undo’
項目(もしくは、‘C-/’
または`C-_’)で、取り消すことができます。 この操作の取り消しは、何回分でも繰り返すことが可能です。
なにかしら他の操作を実行すると、アンドゥが中止されます。
アンドゥの中止後、再度アンドゥ操作を実行すると、リドゥ(やり直し)操作となります(直前のアンドゥ動作自体をアンドゥすることになるからです)。
前回ファイルをセーブしてから行った変更をすべて取り消した場合は、モードラインの左下部に‘**’
ではなく‘--’
と表示されるため、ここを見ればセーブされた状態までアンドゥを実行したことがわかります。‘M-x revert-buffer’
を実行すれば、簡単に、前回セーブした後の変更をすべて取り消して、バッファの中身をファイルがセーブされたときの状態に戻すことができます。
Emacsでは、通常どおりマウスを使うことができます。MB1(マウスの左ボタン)を押してドラッグすれば範囲の選択、MB2(マウスの中央ボタン)を押せば貼り付け(ペースト)が可能です。 MB3(マウスの右ボタン)をクリックすると、選択範囲の拡張(2回クリックすると、さらにその選択範囲をキルする)または、現在のバッファに応じたコンテキストメニューことができますのポップアップ表示が実行できます。 マウスの動作についてさらに詳しく知りたい場合は、EmacsManual を参照してください。 特に、マウスのドラッグ操作中にMetaキーを押し続けると、矩形選択が可能です。たとえば、‘M-’
キーを押しつつ、マウスをドラッグして矩形選択を行い、 次に、MB2ボタンをクリックすれば選択した範囲の文書をペーストできます。 2つにわかれた選択範囲をペーストしたい場合などに、この方法はとっても便利です。
‘Search’
メニューを使えば、検索と置換を実行できます。しかし、通常は、インクリメンタル検索を使ったほうが便利(手軽かつ強力)です。 インクリメンタル検索には‘C-s’
と‘C-r’
を使います。 そのほかにも、正規表現(ワイルドカード)、複数ファイルの検索(‘M-x grep’
)、置換(‘Q’
in Dired)などの検索オプションが利用できます。
リージョンの一方の端となるポイントの位置は、テキストカーソル(マウスポインタではないことに注意)の位置となります。 もう一方の端は、マーク位置といいます。マークは画面に表示されませんが、ポインタ位置はカーソルを見ればわかります。
ポイントを設定するには、MB1をクリックするか、矢印キーを使います。 マークを設定するには、次の3つの方法があります。
‘C-SPC’
(ポイントの位置は変更されない)マウスを使わずリージョンを設定する場合は、リージョンが視覚的に確認できないことがあります。このようなときは、ポイントとマークを入れ換える‘C-x C-x’
を使うとよいでしょう。
さっき実行したコマンドをもう1度簡単に実行するには、どうすればよいでしょうか? ちょっとだけ変更して、もう1度実行したいのですが、どうすればよいでしょうか??
‘C-x ESC ESC’
を使ってください(Ctl-Xを押してから、エスケーブ、エスケーブと2回押す)。 これで、ミニバッファに最後に実行したコマンドのEmacs Lisp(またはキーシーケンス)が入ります。前回とまったく同じコマンドを実行したいときは、‘Enter’
(‘Return’
)キーを押すだけでOKです。
実行例:
‘describe-function’
コマンドに対応する‘C-h f’
を入力したところ、ミニバッファに次のように表示されました: Describe function: (? for help)
.Describe function: (? for help) undo
。 すると、‘undo’
関数についてのヘルプが表示されました。‘C-x ESC ESC’
を入力したところ、ミニバッファに次のように表示されました。Redo: (describe-function (quote undo))
‘Enter’
(‘Return’
)キーを押すだけでOKです。違う関数(たとえば‘forward-sexp’
)の説明が見たい場合は、“undo"の部分を"forward-sexp"に置き換えから、‘Enter’
キーを入力します。Redo: (describe-function (quote forward-sexp))
この例だとそれほど便利な機能に見えませんが、複数の異なるウィンドウ(異なるバッファ)で、“bush"のところを"kerry"に置換するために、引数まで同じ‘query-replace’
コマンドを何度か実行したい、というような場合を考えてみてください。まず、最初に1回実行します。それから、 別のウィンドウをクリックして、再実行のために‘C-x ESC ESC’
と入力します。
Redo: (query-replace "bush" "kerry" nil (if (and transient-mark-mode mark-active) (region-beginning)) (if (and transient-mark-mode mark-active) (region-end)))
The “(query-replace "bush" "kerry"
“部分の意味はすぐにわかるでしょうが、そのほかの部分は厳しいかも知れませんね。心配無用です。‘Enter’
キーを打つだけでよいのですから。
だけど、どうしても引数の意味が知りたいときは、どうやって調べたらよいでしょうか。 正解はこちら: ‘describe-function query-replace’
(‘C-h f’
query-replace)です。ヘルプを見れば、‘query-replace’
は実際には5つの引数を取ることがわかります。
FROM-STRING
- 自分で入力した"bush"に該当TO-STRING
- 自分で入力した"kerry"に該当DELIMITED
- デフォルトでは、nilSTART
- デフォルトでは、”(if (and transient-mark-mode mark-active) (region-beginning))
”END
- デフォルトでは、”(if (and transient-mark-mode mark-active) (region-end))
”それぞれの引数については、ヘルプを読めばわかります。大まかに説明すると、最後の2つの引数は、”query-replace
“検索に対する制限を指定するものです。アクティブなリージョンがある場合(つまり、テキストが選択された状態)に、検索対象がリージョン内に限られるようにしています。アクティブなリージョンがない場合は、バッファ全体のうち、カーソルより下にある部分がすべて検索対象となります。
[この項目の裏テーマがおわかりでしょうか? Emacs Lisp が少し理解できると、Emacs をより効率的に利用できるようになるということです。 学べば学ぶほど、効率的な作業が可能になるでしょう。]
さて、先ほどの例のように別のウィンドウをクリックして別のバッファにカーソルを移動し、query-replace
コマンド以外を再実行するだけではなく、そのほかの操作も実行しなければならないときはどうすればよいでしょうか。直前のコマンドは、実行したいコマンド”query-replace
“ではなくなっているかも知れません。たとえば “switch-to-buffer another-buffer
“コマンドかもしれません(switch-to-buffer
コマンドは、‘C-x b’
に割り当てられています)。
直前のコマンドではなく、それ以前に実行したコマンドを再実行するにはどうすればよいでしょうか?
まず ‘C-x ESC ESC’
を入力した後、‘M-p’
を入力すると、最後に実行したコマンドの1個前に実行したコマンドを取得できます。さらに、その前に実行したコマンドならば‘M-p M-p’
です。以下、同様にたどっていくことができます。‘M-p’
は以前に実行したコマンドを後方向にたどっていきますが、これに対し、‘M-n’
を入力すると、以前に実行したコマンドを前方向にたどっていきます。
覚えておくととっても便利なものとして、キーシーケンスを"キーボードマクロ"として記録し、(たいていの場合は、何度も)そのマクロを繰り返し再生する方法が挙げられます。 具体的な方法は、キーボードマクロ / KeyboardMacros を参照してください。
キーボードマクロの有効な活用法としては、Emacs Lisp コードを保存して、通常のコマンドとして使用するために変更するというものもあります。
Emacsチュートリアルを実行してみましょう(既述の EmacsTutorialの項目を参照)。
たいていの人は、コマンド一覧を眺めて記憶しようとがんばるよりも、実際に実行してみたほうがよく覚えられるものです。 実際に、大きなテキストファイルを手に入れて、いろいろと操作してみてください。データを壊してしまうのが心配なら、バックアップコピーをとっておけば安心です。 – でも、心配無用。Emacs を使っていれば、めったに作業内容が失われることはありません。 undo コマンド(‘C-/’
または `C-_’)が用意されています(練習用ファイルの入手先としては、「Project Gutenberg」([[1]])などがあります。【訳注:日本語ならば、「青空文庫」([[2]])などがよいのではないでしょうか】)
Emacs についてわからないことがあれば、Emacs 自身に訊いてみましょう。メニュー項目、ドキュメント内の用語、コマンド名……など。Emacs でそれらを調べるためのヘルプコマンドとしては次のようなものがあります。
‘C-h k’
(‘describe-key’
コマンド)‘C-h f’
, ‘C-h v’
, ‘C-h w’
, ‘C-h m’
, ‘C-h b’
などの意味が知りたいときも、‘C-h k’
を入力してから調べたいキーシーケンスをタイプすればOK。‘C-h’
で始まるキーシーケンスは、すべてEmacs ヘルプを表示するものです‘C-h f’
、‘C-h v’
などを使って、Emacs使いになるために必要なすべてを調べることができます。そのほかにも、少々遠回りな方法になりますが、すべてのEmacs ヘルプ は、‘C-h C-h’
(‘help-for-help’
コマンド)を通して利用できます。
ちょっと Emacs を触った経験がある方なら、Emacs ライブラリのロード方法をご存じでしょう(LoadingLispFiles と CategoryDotEmacs を参照)。そんな方には Lisp:help+.el( DrewAdams 作)に含まれる‘help-on-click/key’
コマンド(‘C-h RET’
に対応)をお薦めします。 このコマンドでバッファ内の名前、Emacsウィンドウの 一部をクリックしたり、キーシーケンスを入力したり、メニュー項目を選択すると、そのオブジェクトに関する詳細な情報が表示されます。詳しくは HelpPlus を参照してください。
Drewの Lisp:menu-bar+.el ライブラリを使うと、現在使用できるすべてのEmacsヘルプが、メニューバーからもっと簡単に参照できるようになります。詳しくは、HelpMenuBarPlus と MenuBar を参照してください。
そうなんです。Emacs Lisp は、初心者 にも十分役立ちます。実際、ほんの少し Emacs Lisp を学ぶだけで、ずっと Emacs を効率的に使いこなせるようになるのです。その理由は次のとおり。
では、Emacs Lisp について学ぶにはどうすればよいでしょうか。
‘C-x ESC ESC’
を使って、RETキーを押す前に、前回実行したコマンドに対応するLispコードを見てみる。詳しくは RepeatingPreviousCommandsを参照‘C-h f’
(describe-function
)と‘C-h v’
(describe-variable
)を使って、自分の使っているコマンドや変数について理解する。ヘルプ内で、関数名や変数名のリンクをクリックして、それらを定義しているソースコードを表示して、それらをよく読んで理解するようがんばってみる。‘C-h k’
を使って、キーシーケンスを入力したときに、どのコマンドが実行されているのかを確認する。後は、先ほどと同じ。コマンド名のリンクをクリックして、ソースコードを見てみよう‘C-h i’
を実行後、‘Emacs Lisp Intro’
を選択する。http:www.gnu.org/software/emacs/emacs-lisp-intro/では、Web上で Intro を読むこともできる。詳しくは EmacsLispIntro を参照
* ''Emacs Lisp Reference''自体を読む。このリファレンスはとってもよく書けているから。`C-h i'を実行後、`Elisp' (Emacs Lisp は"Elisp"が呼ばれることがある)を選択する。EmacsLispReference はWebでも参照できる(http:www.gnu.org/software/emacs/elisp-manual/)。詳しくは、 EmacsLispReference を参照Noorulが、Emacsで本当によく使われる関数とキーの対応の一覧表を作ってくれています。次のリンクを参照してください(http://noorul.mybesthost.com/Emacs.php#2)。
それから、Windows ユーザーは一度 ScrollLock を覗いておいた方がよいかもしれません。
Randall Wood が、Emacsで(コードではなく)文書を書くための簡単なガイドを書いてくれました。この項目では、Emacsをワープロとして使うための機能について、だいたい網羅されています。きっと初心者にとってもこの項目が役に立つことでしょう(Randall Wood著: http://www.therandymon.com/papers/emacs-for-writers.pdf)
モニタをじっと見るのは辛いので、紙の書籍が欲しいという人もいることでしょう。 EmacsLispIntro、EmacsLispReference、EmacsManual は GnuPress が出版しています。 これらの書籍はよくできていますし、購入によって FreeSoftwareFoundation を応援することができます。
GnuFreeDocumentationLicense は “Free"ではないと考える人もいます。詳しくは、EmacsManualLicense でのディスカッションを参照してください。 当Wikiでは、2003-11-16から始まる議論にともなって GnuFreeDocumentationLicense から現在のライセンスに移行されました(このページのフッターを見てみてください)。
訳注:本項目は個人的なレビューとして書かれていますが、レビューの著者はよくわかりませんでした。
わたしは、はじめてEmacsを触りはじめたとき、Learning GNU Emacs(Cameron, Rosenblatt & RaymondDebra Cameron, Bill Rosenblatt, Eric Raymond共著 日本版は、福崎俊博訳)を入手した(出版社は、技術者なら大半の人が聞いたことがあるだろう O’reilly press(日本版はオライリー・ジャパン))。 まず、構成がすばらしい。この本に書かれたことで、オンラインドキュメントに載っていないことは何もないのだが、それでもこの本は役に立つ。
最初の5章分(150ページ分)は、Emacsを使う上での基本が詳細に述べられている。 その後は、多種多様な人々に向けた、いろいろな話題に特化した章がいくつも続く。 ちなみに、著者による前書きには、さまざまな仕事の人に向けて、どの部分が役に立つかというガイドが含まれている。 扱われている内容は次のとおり。
個人的に、この本は気に入っている。本書には、スクリーンショットやダイアグラムが数多く掲載されているので、コンピュータの前にいなくても、何について書かれているのかが理解できる。 さらに、本書は技術者以外の人も対象にしている。 1つだけ気に入らないのは、こちらのマシン上のMetaキーがESC[0]であるものと想定していることだ。これは見逃すことのできない問題だ。ほとんどのコンピュータ書籍には、自分とは合わない部分があるものだが。しかしながら、本書は貴重なリファレンスに違いない – もちろん、紙による書籍という意味で
本書を購入しようかなと思った人は、お好きな本屋にいって自分に役立ちそうかどうかを確認してほしい。ネット上の古本屋も利用できるだろう。最安値ならば送料込で7ドル程度だ。幸運を祈る。
[0] Emacsでは、多くの操作をキーバインディングによって実行する。“M-x"はMetaキーと文字xをいっしょに押すという意味だ。同様に、C-x、A-xは、それぞれ[Ctrl]キー+[x]キー、 [Alt]キー+[x]キーという意味だ。 Emacsにおいて、どのキーをMetaキーとするかはコンパイル時に決定される。 それによっては、MetaキーがAltキーの場合(これが望ましい)もあるし、ESCキーの場合もあるし、Windowsキーやまったく違うその他のキーの場合だってある。 MetaキーをAltに変えるのは可能であり、もしMetaキーとしてESCキーを使っているのなら、できるだけはやく変更するべきだ。