次: , 前: Keys, 上: Top


1.7 キーとコマンド

本書は、特定のキーの機能を詳しく説明したページばかりです。 しかし、Emacsは直接キーに意味を与えてはいません。 そのかわりに、Emacsは名前を付けたコマンド(commands)に意味を持たせ、 キーとコマンドをバインディング(binding、結び付ける) することによって、キーに意味を与えています。

すべてのコマンドには、プログラマが選んだ名前が付いています。 その名前は、たいていダッシュで区切った数語の英単語です。 たとえば、next-lineforward-wordがそうです。 コマンドは、Lispプログラムである関数定義 (function definition、defun)を持ちます。 これが、コマンドが行うべきことを行えるようにしています。 Emacs Lispでは、コマンドは実際には特別な種類の関数です。 つまり、引数の読み取り方や対話的な呼び出し方が規定されたLisp関数です。 コマンドと関数に関してより詳しくは、 関数とは何かを 参照してください。(本書での定義は少々簡易化してある。)

キーとコマンドのバインディングは、 キーマップ(keymaps)という表に記録されています。 See Keymaps

C-nは垂直方向に1行下がる』という表現では、 Emacsのカスタマイズ方法を理解するうえでは非常に重要であっても、 普段の使い方では意味のない「区別」をあえて無視しています。 下がるようにプログラムされているのはnext-lineというコマンドです。 C-nがそのコマンドにバインドされているので、 そのような効果を発揮するのです。 C-nをコマンドforward-wordにバインドし直すと、 C-nは、かわりに1単語ずつ先へ進むようになります。 キーの再バインディングは、カスタマイズの一般的な方法です。

本書では、今後、話を単純にするために、 普段はこの違いを無視することにします。 カスタマイズに必要な情報を示す場合、 コマンドを実行するキーを記したあとに、 実際にその動作を行うコマンドの名前を括弧に括って示します。 たとえば、『コマンドC-nnext-line)は、 ポイントを下向きに移動する』という表現では、 下向きに移動するコマンドはnext-lineであり、 標準ではキーC-nにバインドされていることを意味します。

これまでカスタマイズに関して述べてきましたので、 変数についてふれておく時期でしょう。 コマンドの説明では、 『これを変更するには、変数mumble-fooを設定する』と 記述することがあります。 変数とは、値を記憶しておくために使う名前のことです。 本書に記載された変数の大部分は、カスタマイズのために使われます。 いくつかのコマンドやEmacsの他の部分では、 変数を調べて設定された値に従ってそのふるまいを変えていきます。 カスタマイズに興味が出てくるまでは、 変数に関する記述は無視してかまいません。 カスタマイズしてみたいと思ったら、 変数に関する基礎を読んでください。 そうすれば、個々の変数に関する情報を理解できるでしょう。 See Variables