画面の構成や扱いについて学ぶ。X環境のWindowで使うので、マウスの操作が意識される。大まかに画面の構成を表示するとこうなっている。X環境で使う件については日本語が通っている実績が大きい。現に何もしてないのに、日本語の入力がインラインではないにせよ可能なのは大きい。

- Xのフレーム(Window^^) X環境で開くとこういう制御部分が付く。ターミナル版だと無いのは言うまでもない。この下に表示される領域をEmacsのフレームと呼ぶ。
- menu bar メニューが表示されている。マウスで操作できるので一般のアプリと同じ感覚。ただし、メニューの日本語化などは行っていないので、全て英語。慣れたほうが今後のためだと思う。menu barはフレームの最上位に1個だけ表示される。
- Window EmacsのWindow。このようにいくつかに分割して独立に操作できる。カーソルが光っていればそこが作業対象である。menu barの作用対象でもある。エディタらしい動きを堪能できる。もちろん、Xのフレームを何個も作る手はあるが、複数ファイルを連携して編集する意味ではこちらのほうが良いかもしれない。
- mode line 各Windowの一番下の1行には、そのWindowでの作業状況が表示される。
- echo area & minibuffer window ここでは作業中のWindowに関する作業結果のechoや各種引数の入力を行う。mode lineもフレームに一番下に1行だけある。
1.1 ポイント
カーソルとポイントは間違えやすいから注意。
- ポイント 編集コマンドの作用位置のこと。マウスのボタン1でもキー操作でも移動できる。ポイントの位置は各Window毎に記録されている。
- カーソル 編集位置を見やすくするために表示していると言ってよい。カーソルは文字に重ねて表示されるので、どのWindowのどこの場所を編集しているのかがひと目で分かる。ポイント(編集コマンドの作用位置)はこのカーソルが当たっている文字とその左の文字の間にある。
例えば’frob’というテキストの’b’にカーソルがある(光っている)場合、ポイントは’o’と’b’の間にあるんだ。だから’!’という文字を打つと、テキストは’fro!b’と編集される。そしてポイントは未だに’!’と’b’にあり、カーソルは’b’に重なったままなんだ。
実際にポイントとカーソルの言葉が混同している場合もあるんだ。
1.2 エコー領域
フレームの一番下はエコー領域(echo area)だ。ここでEmacsと対話することになる。
Emacsは必要だと判断すればコマンドの結果や経過をここに表示する。
エコー領域はミニバッファ(minibuffer)としても使われる。編集を開始する際のファイル名はここから入力したりする。
作用対象のWindowにはカーソルが表示されていることに注意。
1.3 モード行
Windowの最後の行はモード行(mode line)だ。そのWindowで何が進行しているかを表示する。
Xに反転表示機能があるので、モード行は反転表示される。表示は’-‘で始まり’-‘で終わる。
バッファについては別途に。モード業に色んな情報を表示できるらしい。→「モード行の付加機能」
-cs:ch buf (major minor)--line--pos------
カラム | 表示 | 説明 |
ch | ‘**’ | バッファが変更されている |
‘%%’ | バッファは変更されていない | |
buf | バッファ名 | Windowに表示されているバッファ名 |
line | ‘Lnnn’ | 行番号(line-number)モードがオンの場合に表示される 通常オン |
pos | ‘All’ | Windowに収まっている |
‘Top’ | 先頭である | |
‘Bot’ | 下端である | |
‘nn%’ | 先頭からの位置を%表示 | |
major | ‘text’, ‘lisp’,… | そのバッファのメジャーモード(major mode)の名前 rmailモードではメッセージ番号や総数を表示される |
minor | ‘Fill’, ‘Ovwrt’,… | そのバッファに指定されている各種マイナモード(minor mode)を表示 |
角括弧 | ‘[…]’ | 再帰編集レベルにある際にモードがこれで囲まれる 全てのWindowへ |
cs | ‘-‘ デフォルト | 編集中のファイルで使用しているコーディングシステムを表示 入力方式の表示も行われる |
1.4 メニューバー
Emacsフレームの最上部にはメニューバー(menu bar)がある。キーからコマンドを打たなくてもここで各種の機能を実行できるんだ。助かる。X環境なので、マウスでOK。ターミナルでも’M-`’や<F10>でメニューバーのモードに入れる。矢印キーでメニュー内を移動して<RET>で確定。
1.5 ユーザー入力の種類
ASCIIの図形文字とコントロール文字を入力する。コントロール文字の中には特別な名前が付いたものがある。<RET>, <TAB>, <DEL>, <ESC>などがそう。空白は以降<SPC>と表記。これを厳密に言えば、表示した図形が空白である図形文字なんです。コーボード端末の種類は色々。自分が使っているもので確認しないといけない。
C(Control)とM(Meta=Altが相当している)について。押す順番はどちらが先でも構わない。<META>のかわりに<ESC>を使う記述があるが思うように動かなかった。ので、<ALT>を使う。
ファンクションキーも活用していければいいと思う。Fキーは思ったように入力できているようだ。
この辺はかなり弄れるようだが、全部見きってからでないと危険だ。
1.6 キー
キー列(key sequence)(キーと略記)は一塊で「1つのコマンド」として意味を持つ入力イベントの列です。この辺はLISP臭いな。殆どのEmacsコマンドは1文字のみですが、中には2つ以上のイベントを必要とするものもある。
完結キー(complete key)とプレフィックスキー(prefix key)についてはそんなもんと。
1.7 キーとコマンド
あるキーはコマンドにバインディング(binding)されて意味を持ちます。コマンドはLisp関数によってじげんされています。従って、バインディングを変更すれば操作性が変わります。
C-nはnext-lineというコマンドにバインドされているから1行下がる。
カスタマイズはキーバインディングと変数の設定が中心。これは大人になってから。
1.8 テキスト用の文字集合
マルチバイト文字の扱いが気になるが、いまのところ問題はないようだ。
コメント