Go to the first, previous, next, last section, table of contents.


画面構成

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

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

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

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

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

ポイント

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

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

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

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

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

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

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

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

エコー領域

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

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

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

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

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

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

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

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

モード行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

メニューバー

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

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

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

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

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

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


Go to the first, previous, next, last section, table of contents.