[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1. 画面構成

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Screen"
"emacs/画面構成"へのコメント(無し)

文字端末の場合、Emacsは画面全体をその表示領域として使います。 Xウィンドウシステム上では、Emacsは専用のXのウィンドウを作ります。 以降、本書では、Emacsが使う文字画面全体やXのウィンドウ全体を指して、 フレーム(frame)という用語を用います。 Emacsが編集状況を表示するときのフレームの使い方は、 どちらのフレームでも同じです。 通常、1個のフレームだけで始まりますが、必要ならば新たにフレームを作れます。 See 節 15. フレームとXウィンドウシステム

Emacsを起動すると、最初と最後の行を除いたフレーム全体は、 編集しているテキストにあてられます。 この領域をウィンドウ(window)と呼びます。 フレームの最初の行はメニューバー(menu bar)です。 最後の行は、特別なエコー領域(echo area)や ミニバッファウィンドウ(minibuffer window)です。 ミニバッファウィンドウでは、プロンプトが表示され、応答を入力できます。 これらの特別な行の詳細については、以下で説明します。

大きなテキストウィンドウは、 左右や上下に複数のテキストウィンドウに細分割できます。 各ウィンドウは、それぞれ別のファイルに使えます(see 節 14. 複数のウィンドウ)。 本書では、『ウィンドウ』という単語は、 Emacsのフレームを細分割したものをつねに指すこととします。

カーソルが表示されているウィンドウは、選択されたウィンドウ (selected window)であり、その中で編集が行われます。 ほとんどのEmacsコマンドは、選択されたウィンドウ内の テキストに暗黙に作用します(ただし、マウスコマンドでは、 マウスをクリックしたウィンドウが選択されているかどうかに関わらず、 クリックしたウィンドウに作用する)。 選択されていない他のウィンドウには、それが選択されるまで、 単に参照のためだけにテキストが表示されます。 また、Xウィンドウシステム上で複数のフレームを使う場合、 特定のフレームに入力フォーカスを与えると、 そのフレーム内のウィンドウを選択します。

各ウィンドウの最後の行はモード行(mode line)です。 このモード行は、そのウィンドウで何が行われているかを表示します。 端末が反転表示を扱えれば、モード行は反転表示され、 起動時の表示内容は`--:-- *scratch*'で始まります。 モード行は、ウィンドウ内でその上にどのバッファを表示しているのか、 どのメジャーモードやマイナモードを使っているのか、 バッファには未保存の変更があるかどうかなどの情報を示します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.1 ポイント

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Point"
"emacs/ポイント"へのコメント(無し)

Emacsでは、端末のカーソルが編集コマンドの作用する位置を示します。 この位置のことをポイント(point)と呼びます。 多くのEmacsコマンドはポイントをテキスト中で移動し、 テキスト中のさまざまな箇所で編集できるようにします。 マウスのボタン1をクリックしても、ポイントを置けます。

カーソルはある文字に重なって表示されますが、 ポイントは2つの文字のあいだにあると考えなければいけません。 つまり、ポイントは、カーソルが重なっている文字のまえにあります。 たとえば、`frob'というテキストで、`b'にカーソルがある場合、 ポイントは`o'と`b'のあいだにあります。 その位置に`!'という文字を挿入すると、`fro!b'という結果になり、 ポイントは`!'と`b'のあいだにあります。 つまり、カーソルは`b'に重なったままで、実行前と同じです。

『ポイント』を意味して『カーソル』といったり、 ポイントを移動するコマンドのことを『カーソル移動』コマンドと いうこともあります。

端末にはカーソルは1つしかなく、 出力中は出力されている場所にカーソルが表示される必要があります。 これはポイントが移動したということではありません。 端末がアイドルでないと、Emacsにはポイント位置を示す方法がないだけです。

Emacsでいくつかのファイルを編集して、 各ファイルをそれ専用のバッファに入れているとき、 各バッファには独自のポイント位置があります。 バッファが表示されていなくても、 あとで表示されるときに備えてポイント位置を記録しています。

1つのフレームに複数のウィンドウがある場合、 各ウィンドウには独自のポイント位置があります。 カーソルは選択されたウィンドウのポイント位置を示します。 これにより、どのウィンドウが選択されているかもわかります。 複数のウィンドウに同じバッファが表示されている場合には、 そのバッファのポイント位置は各ウィンドウごとに独立にあります。

複数のフレームがある場合、各フレームでは1つのカーソルを表示できます。 選択されているフレームの中のカーソルは塗り潰されます。 他のフレームのカーソルは中抜きの箱で、フレームに 入力フォーカスが与えられると選択されるウィンドウに表示されます。

『ポイント』という用語は、文字`.'に由来します。 この文字は、現在『ポイント』と呼んでいる値を参照するための (オリジナルのEmacsを記述していた言語)TECOのコマンドです。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.2 エコー領域

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Echo%20Area"
"emacs/エコー領域"へのコメント(無し)

フレームの1番下の行(モード行の下)は、エコー領域(echo area)です。 ここは、いろいろな目的向けの少量のテキスト表示に使われます。

エコーとは、あなたが打った文字を表示することを意味します。 Emacsの外部、オペレーティングシステムでは、 ユーザーからのすべての入力を普通はエコーします。 Emacsは、エコーをそれとは違ったように扱います。

Emacsでは、1文字コマンドをエコーすることはありません。 また、複数文字のコマンドでも、打つ途中に間を置かなければエコーしません。 コマンドの途中で1秒以上間を置くとすぐに、 それまでに入力したコマンドの文字をすべてエコーします。 これは、コマンドの残りの部分を促すためです。 いったんエコーが始まると、コマンドの残りは、 打つと同時にただちにエコーされます。 これは、打鍵に自信のあるユーザーには速い応答を提供し、 一方で、自信のないユーザーには最大限のフィードバックを与えるための機能です。 変数を設定すれば、このふるまいを変更できます(see 節 9.7 表示を制御する変数)。

コマンドを実行できなければ、エコー領域にエラーメッセージを表示します。 エラーメッセージに伴って、ビープ音が鳴ったり、画面が点滅したりします。 また、エラーが起きると、先打ちした入力は破棄されます。

エコー領域に有益なメッセージを表示するコマンドもあります。 これらのメッセージはエラーメッセージによく似ていますが、 ビープ音を伴わず、入力も破棄しません。 編集中のテキストを見てもコマンドが何をしたか自明でない場合に、 メッセージがそれを教えてくれることもあります。 特定の情報を与えるメッセージを表示するだけのコマンドもあります。 たとえば、コマンドC-x =は、テキスト中でのポイントの文字位置と、 ウィンドウでの現在の桁位置を示すメッセージを表示します。 処理に時間のかかるコマンドでは、 実行中には`...'で終わるメッセージをエコー領域に表示し、 完了時には`done'を最後に付け加えることもよくあります。

エコー領域に表示される有益なメッセージは、 `*Messages*'と呼ばれるエディタバッファに保存されます。 (まだバッファを説明していないが、詳細は13. 複数のバッファの使い方を参照。) 画面上に短時間しか表示されないメッセージを見逃してしまった場合には、 `*Messages*'バッファに切り替えて、 もう一度そのメッセージを見ることができます。 (連続した同じメッセージは、しばしば、 1つにまとめられてこのバッファに納められる。)

`*Messages*'のサイズは、ある行数に制限されています。 変数message-log-maxは、その行数を指定します。 いったんバッファがこの行数を超えると、最後に1行を付け加えるごとに 先頭の1行を削除します。 message-log-maxのような変数の設定方法については、See 節 28.2 変数

エコー領域はミニバッファ(minibuffer)の表示にも使われます。 これは、編集しようとするファイル名のような、 コマンドへの引数を読むのに使われるウィンドウです。 ミニバッファが使われているときには、 エコー領域は通常コロンで終わるプロンプトで始まります。 また、エコー領域が選択されているウィンドウなので、 カーソルもその行に表示されます。 C-gを打つと、いつでもミニバッファから抜けられます。 See 節 4. ミニバッファ



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.3 モード行

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Mode%20Line"
"emacs/モード行"へのコメント(無し)

テキストウィンドウの最後の行はモード行(mode line)で、 そのウィンドウで何が進行しているか表示します。 テキストウィンドウが1つしかない場合、 モード行はエコー領域のすぐ上に表示されます。 フレーム上では最後から2番目の行になります。 端末に反転表示機能があれば、モード行は反転表示されます。 モード行の表示内容は、ダッシュで始まりダッシュで終ります。

通常、モード行はつぎのように表示されます。

 
-cs:ch  buf      (major minor)--line--pos------

これから、ウィンドウに表示中のバッファに関する情報を得られます。 バッファの名前、どのメジャーモードやマイナモードを使っているか、 バッファのテキストが変更されたかどうか、 バッファ全体のどのあたりを現在表示しているかです。

chは、バッファのテキストが編集されている (つまりバッファが『変更』されている)場合には星印2個`**'になり、 バッファが編集されていない場合には`--'になります。 読み出し専用のバッファの場合には、 バッファが編集されている場合には`%*'になり、 バッファが編集されていない場合には`%%'となります。

bufは、ウィンドウに表示されているバッファの名前です。 ほとんどの場合、編集中のファイル名と同じです。 See 節 13. 複数のバッファの使い方

(カーソルがある)選択されたウィンドウに表示されたバッファは、 Emacsの選択されたバッファでもあり、編集はこのバッファで行われます。 コマンドが『バッファ』に何かを行うといったとき、 現在選択されているバッファを指しています。

lineは、`L'のあとに現在ポイントがある行の番号が続いたものです。 これは、行番号(line-number)モードがオンである (通常はオン)場合に表示されます。 なお、桁番号(column-number)モードをオンにすると、 現在の桁番号も表示できます (多少時間がかかるので、このモードはデフォルトではオフ)。 See 節 9.5 モード行の付加機能

posは、ウィンドウの最上部より上や最下部より下に さらにテキストがあるかどうかを示します。 バッファが小さくて、すべてがウィンドウに収まっている場合には、 posは`All'となります。 そうでない場合、バッファの先頭が表示されていれば`Top'、 バッファの末尾が表示されていれば`Bot'、 あるいは、`nn%'となります。 ここで、nnはウィンドウの最上部より上にあるバッファの 割合を百分率で示します。

majorは、そのバッファのメジャーモード(major mode)の名前です。 各バッファはつねに必ず1つのメジャーモードになっています。 使用可能なメジャーモードには、 基本(fundamental)モード(もっとも特殊化されていないモード)、 テキスト(text)モード、Lisp モード、Cモード、 texinfoモード、その他にも数多くあります。 各モードの相違や選択方法についての詳細は、See 節 17. メジャーモード

メジャーモードには、 メジャーモード名のあとに付加的な情報を表示するものもあります。 たとえば、rmailバッファでは、現在のメッセージ番号とメッセージ総数を表示します。 コンパイルバッファやシェルバッファでは、サブプロセスの状態を表示します。

minorは、ウィンドウの選択されたバッファにおいて、 その時点でオンになっているマイナモード (minor mode)の一覧の一部を示します。 たとえば、`Fill'は、 自動詰め込み(auto-fill)モードがオンであることを意味します。 `Abbrev'は、略語(abbrev)モードがオンであることを意味します。 `Ovwrt'は 、上書き(overwrite)モードがオンであることを意味します。 詳しくは、See 節 28.1 マイナモード(minor mode)。 `Narrow'は、表示中のバッファが、 そのテキストの一部のみを編集するように制限されていることを示します。 これは、実際にはマイナモードではありませんが、そのようなものです。 See 節 27.20 ナロイング。 `Def'は、キーボードマクロを定義中であることを示します。 See 節 28.3 キーボードマクロ

さらに、Emacsが、現在、再帰編集レベルにあるときには、 モードを囲んでいる括弧の周りに角括弧(`[...]')が現れます。 再帰編集レベルの中で別の再帰編集レベルに入っていると、 角括弧は2重になるというふうになります。 再帰編集レベルは、特定のバッファにだけ関係するものではなく、 Emacs全体に影響するので、角括弧はすべてのウィンドウのモード行に表示される、 あるいは、まったく表示されないのどちらかです。 See 節 27.24 再帰編集レベル

ウィンドウを表示できない端末では、一度には、 単一のEmacsフレームしか表示できません (see 節 15. フレームとXウィンドウシステム)。 そのような端末では、モード行のchのあとに、 選択しているフレームの名前が表示されます。 初期フレームの名前は、`F1'です。

csは、編集中のファイルで使用しているコーディングシステムを表します。 ダッシュ(`-')はデフォルトの状態、つまり、 ファイルの内容に応じて行末変換は行うが、 コード変換は行わないことを示します。 `='の場合、コード変換をまったく行わないことを意味します。 単純ではないコード変換をさまざま文字で示します。 たとえば、`1'は、ISO Latin-1を表します。 詳しくは、See 節 16.7 コーディングシステム。 入力方式を使っている場合には、 csの先頭に`i>'の形式の文字列が付加されます。 ここで、iは入力方式を表します。 (`>'のかわりに、`+'や`@'を表示する入力方式もある。) See 節 16.4 入力方式

(ウィンドウシステムではなくて)文字端末を使っている場合、 csは3文字になり、それぞれ、 キーボード入力のコーディングシステム、 画面出力のコーディングシステム、 編集中のファイルのコーディングシステムです。

マルチバイト文字が使用不可の場合、csはまったく表示されません。 See 節 16.2 マルチバイト文字を使用可能にする

csのあとのコロンは、特定の場面では別の文字列に変わることがあります。 Emacsは、バッファ内の行区切りとして改行を使います。 ファイルによっては、行区切りとして別の慣習を用いるものもあります。 復帰改行(MS-DOSの慣習)、あるいは、復帰のみ(Macintoshの慣習)です。 バッファのファイルが復帰改行を使っている場合には、 オペレーティングシステムに依存して、 コロンはバックスラッシュ(`\')か`(DOS)'に変わります。 ファイルが復帰のみを使っている場合には、 コロンはスラッシュ(`/')か`(Mac)'に変わります。 システムによっては、行区切りとして改行を使っているファイルであっても、 Emacsはコロンのかわりに`(Unix)'を表示します。

各種行末形式のモード行への表示は、 各変数、eol-mnemonic-unixeol-mnemonic-doseol-mnemonic-maceol-mnemonic-undecidedに ユーザーにとって適切な任意の文字列を 設定することでカスタマイズできます。 変数の設定方法については、See 節 28.2 変数

ポイント位置の桁番号、現在時刻、新着メイルの有無などの お手ごろ情報をモード行へ追加する機能については、 See 節 9.5 モード行の付加機能



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.4 メニューバー

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Menu%20Bar"
"emacs/メニューバー"へのコメント(無し)

各Emacsフレームには、通常、最上部にメニューバー(menu bar)があり、 よく使われる操作を実行するのに使えます。 読者自身で簡単に確かめられますから、 ここではそれらを列挙する必要はないでしょう。

ウィンドウシステムを使っているのであれば、 マウスを使ってメニューバーからコマンドを選べます。 メニュー項目のあとにある右向き矢印は、 その項目にサブメニューがあることを示します。 項目の最後に`...'がある場合は、コマンドを実際に実行するまえに、 コマンドがキーボードから引数を読み取ることを意味します。

メニュー項目の完全なコマンド名や説明文を見るには、 C-h kと打ってから、通常どおりにマウスでメニューバーを選択します (see 節 6.2 キーに関する説明)。

マウスのない文字端末でも、 M-`F10(これらはtmm-menubarを起動する)を打てば、 メニューバーを利用できます。 このコマンドは、キーボードからメニュー項目を選択するモードに入ります。 エコー領域には、仮の選択項目が表示されます。 左矢印キーや右矢印キーでメニューの中を移動して別の項目を選べます。 選択を確定するにはRETキーを打ちます。

各メニュー項目には、その項目を指定する1個の文字や数字も割り当てられています。 通常、それらは項目名の単語の頭文字です。 これらの文字や数字は、項目名と`=>'で分離されています。 項目の文字や数字を打てばその項目を選べます。

メニューバーにあるコマンドの中には、 キーバインディングを持つものもあります。 その場合、項目自身のあとの括弧の中に等価なキーバインドを表示します。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.5 ユーザー入力の種類

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=User%20Input"
"emacs/ユーザー入力の種類"へのコメント(無し)

GNU Emacsは、キーボード入力に対しては拡張ASCII文字集合を使います。 また、ファンクションキーやマウスボタン操作のような文字以外の 入力イベントも受け付けます。

ASCIIは、128の文字コードから成ります。 これらのコードの中には、`a'や`='のような 図形記号に割り当てられているものもあります。 それ以外は、Control-aのようなコントロール文字です (通常、C-aと略記)。 C-aの名前は、CTRLキーを押し下げたままaを 押すことからきています。

ASCIIコントロール文字の中には、特別な名前が付いたものもあります。 多くの端末では、コントロール文字を打つための特別なキーを備えています。 たとえば、RETTABDELESCがそうです。 空白文字は、以下では普通SPCと表記します。 厳密にいえば、表示した図形が空白である図形文字です。 C-jに対する別名である『linefeed』(ラインフィード) (5)という ラベルが付いたキーを備えたキーボードもあります。

Emacsでは、数千の印字文字(see 節 16. 国際化文字集合の使い方)、 追加のコントロール文字、任意の文字と組み合わせ可能な修飾子を導入して、 ASCII文字集合を拡張しています。

ASCII端末では、利用可能なコントロール文字は32個しかありません。 これらは、英字と`@[]\^_'のコントロール変種です。 さらに、コントロール文字では、シフトキーは意味を持ちません。 つまり、C-aC-Aは同じ文字であり、Emacsは区別できません。

しかし、Emacsの文字集合自体には、 すべての印字文字にコントロール変種を用意する余地があり、 C-aC-Aを区別できます。 Xウィンドウシステムでは、これらすべての文字を入力できます。 たとえば、C--(コントロールマイナス)とC-5は、 Xウィンドウシステム上では意味を持つEmacsコマンドです。

Emacsの文字集合に対するもう1つの拡張は、修飾ビットの追加です。 通常は1ビットの修飾ビットだけを使い、 このビットをメタ(Meta)と呼びます。 すべての文字にはメタ変種があります。 たとえば、Meta-a(通常はM-aと略記)や M-AM-aとは異なる文字だが、Emacsでは通常、同じ意味)、 M-RET、M-C-aです。 伝統的な理由で、通常、M-C-aよりむしろC-M-aと書きます。 論理的には、2つの修飾キーCTRLMETAの順序は関係ありません。

端末の中にはMETAキーを備えたものもあり、 このキーを押し下げることでメタ文字を打てます。 たとえば、Meta-aは、METAを押し下げたまま aを押して入力します。 METAキーはSHIFTキーと同じように働きます。 しかし、このようなキーのラベルがつねにMETAであるとは限りません。 というのは、この機能は、別の主目的を持つキーとするための 特別なオプションであることがままあるからです。

METAキーがなくても、ESCで始まる2文字列を使って メタ文字を入力できます。 つまり、M-aを入力するには、 ESC aと打ちます。 C-M-aを入力するには、ESC C-aと打ちます。 この方法に慣れているのであれば、 METAがある端末でも、ESCを使ってかまいません。 Xウィンドウシステムには、他にもいくつかの修飾キーがあり、 すべての入力文字に適用できます。 これらは、SUPERHYPERALTと呼ばれます。 文字にこれらの修飾子が付いていることを示す意味で、 `s-'、`H-'、`A-'と書きます。 つまり、s-H-C-xは、Super-Hyper-Control-xを省略したものです。 すべてのX端末に、実際にこれらの修飾子用のキーがあるわけではありません。 実際、ALTとラベルされているにも関わらず、 実はMETAとして機能するキーを持つ端末が多くあります。 Emacsの標準キーバインディングには、 これらの修飾子が付いた文字はありません。 しかし、Emacsをカスタマイズして、それらに独自の意味を割り当てることができます。

キーボード入力には、 ファンクションキーや矢印キーのような文字以外のキーも含まれます。 マウスボタンも文字の範囲には入りません。 これらのイベントも、修飾キーCTRLMETASUPERHYPERALTを使って、 キーボード文字と同じように修飾できます。

文字入力と非文字入力の両者を合わせて、 入力イベント(input events)と呼びます。 より詳しくは、 See 節 `入力イベント' in

Emacs Lisp リファレンスマニュアル
。 Lispのプログラミング抜きに、 文字イベントや非文字イベントの意味を再定義したい場合には、 28. カスタマイズを参照してください。

ASCII端末では、ASCII文字だけしかコンピュータに送れません。 これらの端末では、文字の並びを使って各ファンクションキーを表現します。 ただし、キーボード入力ルーチンがこれらの特別な文字の並びを認識して、 Emacsの他の部分に渡すまえにファンクションキーイベントに変換してしまうので、 これらの文字の並びがEmacsユーザーの目にふれることはありません。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.6 キー

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Keys"
"emacs/キー"へのコメント(無し)

キー列(key sequence)(キーと略記)は、 一塊で『1つのコマンド』としての意味を持つ入力イベントの列です。 Emacsのコマンド列の中には、1文字のみ、つまり、 1イベントのみであるものもあります。 たとえば、C-fはポイントを1文字先へ進めます。 しかし、なかには、起動に2つ以上のイベントを必要とするコマンドもあります。

あるイベント列が1つのコマンドを起動するのに十分である場合、 それらを完結キー(complete key)と呼びます。 完結キーの例としては、C-aXRETNEXT(ファンクションキーの1つ)、DOWN(矢印キー)、C-x C-fC-x 4 C-fがあります。 完結するほど十分に長くないイベント列を、 プレフィックスキー(prefix key)と呼びます。 上の例では、C-xC-x 4が、プレフィックスキーです。 すべてのキー入力列は、完結キーかプレフィックスキーのどちらかです。

Emacs標準のコマンド割り当てでは、ほとんどの1文字は完結キーです。 残りの少数はプレフィックスキーです。 プレフィックスキーは、後続の入力イベントと結び付いて、 それ自体が完結キーやプレフィックスキーとなる、 さらに長いキーの列を作ります。 たとえば、C-xはプレフィックスキーなので、 C-xに続く入力イベントと結び付いて2文字のキー列を作ります。 C-x C-fC-x bを含めて、 これらのキー列のほとんどは完結キーになります。 C-x 4C-x rのように、 いくつかのキー列はそれ自体がプレフィックスキーとなり、 3文字のキー列を作ります。 キー列の長さに制限はありませんが、 実用上は4文字を超える長さのキー列を使うことはめったにありません。

これに対して、完結キーには入力イベントを付け加えることができません。 たとえば、2文字の列C-f C-kはキーではありません。 というのは、C-fがそれ自体で完結キーだからです。 C-f C-kにコマンドとしての独立した意味付けをすることは不可能です。 C-f C-kは、2つのキー列であって、1つのキー列ではありません。

Emacsのプレフィックスキーは、C-cC-hC-xC-x RETC-x @C-x aC-x nC-x rC-x vC-x 4C-x 5C-x 6ESCM-gM-jです。 しかし、これらは固定されているわけではなく、 Emacsのキー割り当ての標準設定となっているだけです。 Emacsをカスタマイズすれば、新しいプレフィックスキーを設定したり、 これらを解除したりできます。 See 節 28.4 キーバインディングのカスタマイズ

プレフィックスキーを設定したり解除したりすると、 可能なキー列の集合を変えることになります。 たとえば、C-fをプレフィックスキーとして再定義すると、 C-f C-kは自動的に (これをさらにプレフィックスとして定義しない限り完結した)キーになります。 逆に、C-x 4をプレフィックスでなくすると、C-x 4 f (またはC-x 4 anything)は、もはやキーではなくなります。

プレフィックスキーのあとにヘルプ文字(C-hF1)を打つと、 そのプレフィックスで始まるコマンド一覧を表示できます。 歴史的な背景から、C-hが機能しないプレフィックス文字も存在します。 これらの文字では、C-hが別の意味に割り当てられていて、 容易には変更できないのです。 しかし、F1はすべてのプレフィックスに対して使えるはずです。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.7 キーとコマンド

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Commands"
"emacs/キーとコマンド"へのコメント(無し)

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

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

Emacs Lisp リファレンスマニュアル
を 参照してください。(本書での定義は少々簡易化してある。)

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

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 節 28.2 変数



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

1.8 テキスト用の文字集合

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=emacs&node=Text%20Characters"
"emacs/テキスト用の文字集合"へのコメント(無し)

Emacsバッファ内のテキストは、1バイト8ビットのバイトの列です。 各バイトで、1つのASCII文字を表現できます。 ASCIIコントロール文字(8進数000〜037、0177)と ASCII印字文字(8進数040〜0176)の両方を使えます。 しかし、非ASCIIコントロール文字はバッファには現れません。 メタのようなキーボード入力で用いられるその他の修飾フラグも バッファ内では許されません。

いくつかのASCIIコントロール文字は、 テキスト中では特別な目的のために用いられていて、特別な名前が付いています。 たとえば、改行文字(8進数012)は、バッファ内の1行の終りに使われます。 また、タブ文字(8進数011)は、つぎのタブストップ位置(通常8桁ごと)まで テキストを字下げするために使われます。 See 節 9.6 テキストの表示方法

非ASCII印字文字もバッファ内に存在できます。 マルチバイト文字を使用可にしてあれば、 Emacsが扱える任意の非ASCII印字文字を使えます。 それらの文字の文字コードは256(8進で0400)から始まり、 各文字は2バイト、あるいはそれ以上のバイト列として表現されます。 See 節 16. 国際化文字集合の使い方

マルチバイト文字を使用不可にしている場合、 非ASCII文字のうちの1種類のアルファベットだけを使えますが、 それらはすべて1バイトに収まるものです。 文字コードは0200から0377を使います。 See 節 16.12 1バイトヨーロッパ文字の使い方


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]