表3 CUIでのカーソル操作
ここでの「単語」とは英単語のことで,日本語は含まれません。

[画像のクリックで拡大表示]

表4 CUIでの削除方法
DelキーはDelete,BSキーはBack spaceと刻印されているキーもあります。

[画像のクリックで拡大表示]

写真5 Editプルダウン・メニュー
[画像のクリックで拡大表示]

表5 複写・移動で利用するCUIの操作
[画像のクリックで拡大表示]

写真6 Searchプルダウン・メニュー
[画像のクリックで拡大表示]

写真7 Advanced Search/replaceプルダウン・メニュー
[画像のクリックで拡大表示]

表6 正規表現に用いる基本的な特殊文字
[画像のクリックで拡大表示]

写真8 ファイルとウインドウとフレーム操作のプルダウン・メニュー
[画像のクリックで拡大表示]

表7 ファイル・ウインドウ・フレーム関連のCUI操作
[画像のクリックで拡大表示]

写真9 Buffersプルダウン・メニューの内容
[画像のクリックで拡大表示]

写真10 フレームを上下に分割してすべてのバッファ名を表示
ちなみに,使用している日本語入力システムはKKCです。

[画像のクリックで拡大表示]

写真11 終了時の確認画面
[画像のクリックで拡大表示]

写真12 終了の再確認画面
[画像のクリックで拡大表示]

基本コマンドの使い方

 Emacs本来の操作は,CUIベースのコマンド入力になります。しかし,CUIベースの操作は,初心者向きとは言えません。やはりGUIベースの操作の方が初心者向きでしょう。まず,GUIベースの操作に慣れ,徐々にEmacs本来のCUIベースの操作に移行すればよいでしょう。

カーソルの移動

 GUIでのカーソル移動については,説明はいらないでしょう。CUIのカーソル(すなわちポイント)移動は,文字,単語,行などを基準に行えます(表3[表示])。

テキストの削除

 CUIのテキスト削除もカーソルの移動と同様に文字,単語,行を基準に操作が行えます。なお,削除したテキストは「キルリング」と呼ばれるバッファに保存されていますので,削除した後に元の場所に戻すことや別の場所にコピーすることも可能です。さまざまな削除方法を表4[表示]に示します。

テキストの複写・移動

 テキストの複写・移動を実行するには,まず「リージョン」を指定します。リージョンとは,テキストの任意の位置に付けたマークとポイントとの間の領域のことで,反転表示(あるいは網掛け表示)されます。GUIベースではマウスでドラッグすることがリージョン指定になります。

 リージョン指定後,Editメニューをクリックすると写真5[表示]のプルダウン・メニューが表示されます。リージョンを指定していない場合には,Cut,Copy,Pasteは半透明色で表示され,クリックすることはできません。

 テキストを複写する場合はCopyをクリックした後,複写したい位置にカーソルを移動し,再度EditメニューのPasteをクリックします。テキストの移動では,Copyの代わりにCutを行います。

 CUIベースでの操作では,リージョンをキルリングに複写・移動し,このキルリングの内容を目的とするカーソル位置に挿入することで,テキストの複写・移動を実現します。そこで使用するキー操作を表5[表示]に示します。

テキストの検索・置換

 Emacsには,強力なテキスト検索および置換機能が用意されています。ここでは基本機能だけを紹介します。

 Emacsには,検索キーワードを完全に入力してから検索を実行する「一括検索」と,検索キーワードの入力直後から検索を開始する「インクリメンタル検索」の2種類の検索方法が用意されています。 EditメニューのSearchプルダウン・メニューを表示したのが写真6[表示]です。

・一括検索

 この検索は一括検索で,順方向と逆方向の検索が行えます。Searchをクリックすると,エコー領域に「Search for string: 」と表示されますので,検索したいテキストを入力します。カーソル位置から順方向に検索を行い,入力テキストと一致するテキストの次にカーソルが移動します。

・インクリメンタル検索

 インクリメンタル検索はCUIで実行します。C-sを入力すると,エコー領域に「I-search: 」と表示されますので,検索したいテキストを入力します。一括検索との違いは,テキストの入力と同時に該当するテキストの検索が順方向に実行されることです。また,一致したテキストは反転表示となります。検索終了には,Enterキーを入力します。

・テキスト置換

 テキスト置換は,順方向の問い合わせ置換を紹介しましょう。SearchメニューのReplaceをクリックすると,エコー領域に「Query replace: 」と表示されますので,置換対象のテキスト(例えば,aaa)を入力し,Enterキーを押します。すると,エコー領域に「Query replace aaa with: 」と表示されますので,置換するテキスト(例えば,bbb)を入力し,Enterキーを押します。ここで,カーソル位置から検索が実行され,置換対象のテキストが見つかると,エコー領域に「Query replace aaa with bbb: (? help)」と表示されます。置換を実行する場合には「y」または空白文字,置換せずに次の候補へ進む場合には「n」,置換を終了する場合には「q」を入力します。また,これ以降問い合わせをしないで置換を実行させるには「!」を入力します。

・正規表現を用いたテキスト検索

 正規表現を用いたテキスト検索や置換を行いたい場合には,SearchメニューのAdvanced Search/replaceプルダウン・メニューを利用します(写真7[表示])。例えば,Search Regexpをクリックすると,エコー領域に「Search for regexp: 」と表示されますので,正規表現テキストを入力します。検索は順方向に行われます。

 Emacsの正規表現に用いる基本的な特殊文字は表6[表示]の通りです。

ファイル・ウインドウ・フレーム

 Fileメニューをクリックすると,ファイル,ウインドウ,フレーム操作のプルダウン・メニューが表示されます(写真8[表示])。ファイル操作については説明の必要はないと思います。ただし,ファイルへの保存では「Save (current buffer)」,「Save Buffer As」というように用語「バッファ」が使われています。ファイルからEmacsに読み込まれた内容,あるいは編集された内容は,バッファに格納されているためです。

 また,前述したようにEmacsでは「ウインドウ」と「フレーム」が使われています。フレーム内のウインドウが1つである場合には,ウインドウとフレームは同じものになります。Split Windowメニューでは,フレームが上下に分割され,2つのウインドウが開きます。Emacsでは左右にフレームを分割することもでき,ウインドウのサイズ変更も可能です。これらの操作には表7[表示]のコマンドを入力します。

 例えば,New Frameメニューをクリックすると,現在のフレームと同じフレームがもう一つ出現します。Delete Frameメニューでフレームを閉じることができます。

バッファの表示

 Buffersメニューでは,例えば写真9[表示]のようなプルダウン・メニューが表示されます。写真9では3つのバッファが表示されています。「sample.text」,「*scratch*」および「*Messages*」です。

 「sample.text」はバッファを保存するファイル名です。言い換えれば,現在テキスト編集を行っているファイルのバッファです。

 バッファ「*scratch*」および「*Messages*」は,Emacsの起動時に自動的に作成されます。前者のバッファでは,Emacs Lispで作成したプログラミングを入力すると,Emacsが解釈・実行した結果を返します。また,後者のバッファにはEmacsの実行ログが保存されています。従って,複数のファイルを開いている場合には,その分のバッファ名が表示されることになり,Buffersメニューの内容は固定ではないことが分かります。

 また,List All Buffersメニューをクリックすると,フレームが上下に分割され,下側のウインドウにすべてのバッファ名が表示されます(写真10[表示])。

 Fileのプルダウン・メニューから分かるように,Close(current buffer)で現在のバッファを閉じることができますし,Revert Bufferでこれまでの編集作業をすべて廃棄して編集前のバッファに戻すこともできます。

終了コマンド

 Emacsの実行を終了するには,FileメニューのExit Emacsをクリックします。このとき,読み込みファイルを指定してEmacsを起動していて,なおかつバッファの内容を編集してからファイルに保存していない場合,写真11[表示]のような確認画面が表示されます。

 バッファの内容をファイルに保存する場合にはYesボタンをクリックします。保存する必要がない場合にはNoボタンをクリックしますが,写真12[表示]のように再度確認を求めてきますので,Yesボタンをクリックします。

コマンドの取り消し

 直前に実行したコマンドを取り消し,元に戻す場合にはEditメニューのUndoをクリックします。Emacsでは取り消しの回数に制限はありません。すべての操作を元に戻すことができます。

 CUIでは,C-x uにより,直前に実行したコマンドを取り消すことができます。この操作を繰り返すことで,すべての操作を元に戻すことも可能です。また,CUI操作ならではのコマンド取り消し操作方法に,C-gによる実行入力途中のコマンドの取り消しがあります。例えば,C-x C-sを操作してファイルを保存しようとしたとき,C-xまで操作したときに保存を止めたくなったとします。そこで,C-gを押すことにより,C-xまでの操作を取り消すことができます。CUIによる操作が分からなくなったときにはとりあえずC-gを押し,それまでの操作を取り消すようにしましょう。

シェルの実行

 Emacs内でシェル・コマンドを実行することもできます。M-!と入力すると,エコー領域に「Shell command: 」と表示されるので,そこにシェル・コマンドを入力します。実行結果は1行に収まる場合にはエコー領域に,複数行になる場合にはバッファ名「*Shell Command Output*」に出力されます。ウインドウは上下に分割され,下側のウインドウに出力されます。

バックアップ・ファイル

 既存のファイルをEmacsに読み込み,編集後に保存すると,自動的にバックアップ・ファイルが作成されます。ファイル名がsample.textならばバックアップ・ファイル名はsample.text~となります。つまり,ファイル名の最後に特殊文字「~」(チルダと読みます)が付加された名前になります(ただし,デフォルトではオートセーブ機能が有効になっており,こちらが優先されてオートセーブのファイル名「#sample.text#」になります)。このバックアップ・ファイルを自動作成しない設定も可能ですが*10,編集に失敗すると元に戻すことができなくなりますので注意しましょう。

初期化ファイルの「.emacs」

 Emacsは起動時にホーム・ディレクトリ内の初期化ファイル「.emacs」(これも隠しファイルです)を読み込みます。Fedora Core 3およびVine Linux 3.1(3.2)ともに,ユーザー登録(adduser)を行うと,/etc/skelディレクトリからデフォルトの初期化ファイルがコピーされます。初期化ファイルの内容に慣れるまでは,熟練者の初期化ファイルを参考にしてカスタマイズするとよいでしょう。