設定ファイルを書いたり、レポートを書いたり、メールを書いたりなど、 コンピュータを使う上でエディタは非常に重要なツールの一つです。
なおMS-DOS上での有名なエディタとしては、MIFESやVZなどがあげられます。 MS-Windowsでは``メモ帳''がこれに相当するでしょう。
Mule は Nemacs を発展させたもので Multilingual Enhancement of GNU Emacs の意味です(どこからどの文字をとったのかは分からない……)。 Mule は「多言語」というところがみそで、日本語以外にも 韓国語、中国語、欧州や東南アジアの言語まで表示・編集することができます。 最近のバージョンでは、X window system 上での マウスを使った操作などの機能も組み込まれています。
Mule(Emacs) は超多機能なエディタで、文書の入力だけでなく、 メールやニュースの読み書き、はてはWWWの参照までなど さまざまな機能を持っています。Lispの処理系を内蔵しており、どんどん 拡張されています。Mule はエディタでなく環境だといってもいいでしょう。
まずは起動方法です。 編集するファイル名を後ろに書いて実行します。 ファイル名は、すでに作ってあるものはそのファイルを読み込み、 そこにないファイル名のときは新規編集としてファイルを作ってくれます。
% mule filename
ファイル名は好みでつければいいのですが、 できればファイル名から内容が想像できるようなものにしましょう。 そしてファイル名には、拡張子をつけておきましょう。 拡張子とは、そのファイルの種類をあらわすためにつかわれ、 主な拡張子としては次のようなものがあります
拡張子 ファイルの種類 ---------- ---------------------------- .txt/.doc テキストファイル .c C言語のソースファイル .tex TeX の文章ファイル .html HTML で書かれた文書 .com/.exe DOS/WINDOWS での実行ファイル
Mule でファイルを編集していると、突然いちばん下の行に、
Garbage collecting...と表示されて反応がなくなることがあります。こんなときは慌てないで、
Garbage collecting...doneと、なるまで数秒間なので待っていて下さい。
この Mule の動作は、実行中に使っていたデータ用のメモリのうちで、 使われなくなったメモリをかき集めているのです。 これをガベージコレクション(ゴミ集め)といいます。 ここで慌てて、いろいろキーボードから打ち込んだりしない方が安全です。 キーボードから打ち込まれた文字は、ガベージコレクション終了後にみんな 入力されるので、そのとき予期せぬ状態になっているかも知れません。 慌てないで待っていましょう。
二つめですが、 Mule が``yesかno''を聞いてくる時があります。 Mule は場合によって、
... ?(y or n)または
... ? (yes or no)と聞いてきます。 このときは、聞かれている通りに答えてあげましょう。 yes or no で聞かれているのに y とだけ答えると、
Please answer yes or no.と怒られてしまいます。
yes or no は、より重要な判断のときに使われています。
三つめですが、なにか Mule の機能を使っていて、動作がわからなくなることが あります。こういう時は、 C-g と入力することで、動作を中断してくれます。 ここで C- とは、``コントロールキーを押しながら''ということです。
Mule には「使い方入門講座」の機能が用意してあります Mule の画面に出てくるとおりにすることで、基本的な編集機能を効率的に学習 できます。
「使い方入門講座」の起動方法ですが、Mule が起動したら、
ESC x help-with-tutorial-for-muleとしましょう。あとは画面の指示にしたがって下さい。
[--]E.:-----Mule: test (Fundamental)--All------------------- a b c d e fのようになっています。
ここでaの部分は漢字入力の状態を表しています(これはeggの場合の表示)。
bは1文字めがバッファの文字コード、2文字めが改行の取り扱いを示します。
cはバッファの編集状態を示し、以下の3通りがあります。
----- 編集されてない --**- 編集された --%%- 編集不可
d はバッファの名前です。
e はバッファの編集モードです。詳しくは触れません。
f は表示されているバッファの割合を示します。割合に応じて次のように 表示されます。
All バッファが全て表示されている Top バッファの先頭が表示されている Bot バッファの末尾が表示されている ??% どのあたりにいるかが表示されている
エコー領域は、 Mule のメッセージを表示したり、 ミニバッファと呼ばれる特殊なバッファを介して Mule とのやり取りを おこなうための領域です。これは単にミニバッファとも呼びます。
first second third fourth fifth sixth seventh eighth ninth tenth eleven\ th twelvethウインドウの右端に \ を表示して折り返します。 画面には2行に見えますが、 Mule のなかでは1行として扱われます。
先ほども書きましたが、 Mule は``挿入モード''で処理をしていますので、 カーソルを動かせばその位置に文字が入ります。 そのカーソルの移動方法は、
キー操作 方向 -------- --------------- C-p 前行に移動 C-n 次行に移動 C-f ひとつ左に移動 C-b ひとつ右に移動となっています。 この``C-''というのは``コントロールキーを押しながら''という意味です。 たとえば C-p なら``コントロールキーを押しながら P のキーを 押す''ということです。
なお、使っている機械や場所にもよりますが、もっと覚えやすいキーに 割り当ててある場合もあります。カーソルキーやテンキーに割り当てて あることが多いでしょう。(X 版の Mule なら標準でカーソルに割り当てられています)
ではもう少し高級なカーソル移動も書いておきましょう。必ずしも 覚えなくてもいいものですが、余裕があれば覚えておきたいものです。
キー操作 方向 --------- ---------------------- C-v 前に一画面分進む M-v 後ろに一画面分戻る M-f 一単語先に進む M-b 一単語後に戻る M-] 段落の終わりに移動 M-[ 段落の先頭に移動 C-a 行の最初に移動 C-e 行の最後に移動 M-< ファイルの最初に移動 M-> ファイルの最後に移動 C-l 画面を書き直す。 カーソルのあった行が画面の中央にくる
このなかで、M- とあるのは、``メタキー''を押しながら押すことを 意味しています。メタキーはキーボードによって異なります。スペースの横に あったりします。PC/AT では alt キーが代用になってることが多いようです。 メタキーのかわりに、ESC キーが利用できます。 この場合は、同時に押さずに一度 ESC を押してから目的のキーを押します。 例えば M-xなら、ESC を押してから、x をおします。
キー操作 削除の仕方 --------- ------------------------- C-d カーソル位置の文字を削除 Delete カーソルの左側の文字を削除 C-k カーソル位置から行末まで削除
キー操作 終了の仕方 -------- -------------- C-x C-c セーブして終了とします。 このとき、内容が変更されているのに保存(セーブ)されていないファイルがあれば、
save file test.txt? (y or n)と保存するかどうか聞いてきますので、y か n で答えてあげて下さい。
y なら保存が終ったら終了します。 n のときは、
Modified buffers exist; exit anyway? (yes or no)このように``本当に終ってもいいのか''と聞いてきます。 ``本当に終りたい''ときは、yes と入力します。
以上で、とりあえず Mule で文字を入力できるようになりました。 しかしこれは必要最低限の機能なので、このあとの編集機能についてを読んで下さい。
例えば、コマンドの引数を入力している途中や、2つ以上のキー入力を必要とする コマンドを入力している最中の他、間違って自分の知らない変なコマンドを 打ち込んでしまって戻れないとき、それをやめたくなったら、 C-g を使えば良いのです。
アンドゥとは、一回前に行なった編集作業を取り消して、編集前の状態に戻すコマンド です。当然アンドゥを複数回行なえば、さらに前の状態へ戻って行くことができます。 アンドゥをさらに取り消して、先の状態に進めたい場合は、 C-g を押すか、 カーソルを移動させたあと、再び C-x u を押します。
検索を始めるコマンドは、カーソル位置以降を検索するならば C-s 、カーソル位置以前ならば C-r です。 C-s をタイプすると、エコーエリアに、
I-search:という文字列がプロンプトとして表示されます。 ここで検索文字を入力して下さい。 検索文字の入力後、C-s を押すごとに、同じ検索文字を続けて検索できます。 ESC を押すと、終了できます。
カーソル位置以降を置換するコマンドは M-% です。 置換を開始するとエコーエリアに、
Query replace:と表示されますので置換される文字列を入力して下さい。
次に、
with:と表示されますので置き換える文字列を入力して下さい。
置換される文字列を探してカーソルが移動しますので、置換する時はスペースキー、 置換しない時は N を押して下さい。 すべての文字列を一度に置換するときは、! を入力してください. 途中で RET か q を押すか、置換される文字列がなくなると 置換終了になります。
キー操作 効果 ---------- --------------------------------------------- C-g 実行の中止 C-x u アンドゥ C-s or C-r 逐次検索 M-% 文字列置換(問い合わせあり)
まず、削除したい範囲の先頭の文字にカーソルを合わせます。 そして C-@ または C-SPC を押して、その位置をマークします。 このときカーソル位置の文字も範囲の対象となります。
次に削除したい範囲の終りのところにカーソルを合わせます。 ここでブロック削除の C-w で削除します。 これにより、最初にマークした位置から、カーソル位置までの範囲 (これをリージョンと呼びます)が削除され、カットバッファに記憶されます。 このときはカーソル位置の1文字前までが対象となりますので注意して下さい。 また、 C-w ではなく M-w を押すことにより削除を行なわずにカットバッファに コピーすることができます。
そして移動させたい場所の先頭にカーソルを合わせて、 C-y でその内容が ペーストされます。
キー操作 効果 ---------- --------------------------------------------- C-@ または C-SPC ブロック先頭をマーク C-w マークした位置からカーソルの直前までを削除 M-w マークした位置からカーソルの直前までを記憶 C-y 記憶された内容をペースト
このカット&ペーストは X Window System の Selection
の機能を使用しており、kterm などとの相互のカット&ペーストが可能です。
バッファとウインドウについて
Mule ではウインドウを複数に分割し、それぞれにバッファを開き、
同時に編集することができます。
用語について ----------------------------------------------------------------- フレーム Window System での 1つのウィンドウ ウィンドウ Mule の編集エリアを切り分けたそれぞれの領域。 フレームは複数のウィンドウに切り分けられる バッファ 編集対象となっている文書のこと バッファをウィンドウに呼び出すことで編集可能になる。 バッファはメモリの許す限りいくらでももてる カレント〜 現在操作対象になっているもの
キー操作 効果 --------- --------------------------------------------- C-x C-f バッファを開く C-x i カーソル位置にファイルを読み込む C-x C-s カレントバッファをファイルにセーブする C-x C-w ファイル名を指定してセーブする
Switch to buffer: (default hoge.txt)と表示されますので、切替えたいバッファの名前を入力します。 何も入力しないで return だけを入力すると、 この例の場合は hoge.txt に切り替わります。
C-x C-b(Switch-to buffer)でウインドウを分割して現在開いているバッファの一覧 を表示します。 マウスが使える場合は、バッファの名前が表示されているところにマウスカーソルを あてて(バッファ名がが反転表示されます)中ボタンクリックにより、 そのバッファが編集できるようになります。
C-x k でバッファを消去します。C-x k を入力すると現在カーソルがある バッファの名前が表示されますから、それで良ければそのままRetuen}、または 消去したいバッファの名前を入力します。 ちなみに先ほど出したバッファリストも一つのバッファです。従ってC-x k で消去することが出来ます。
分割したバッファの境界を動かすには、C-x ^ を入力するか、境界部分を マウスでドラッグします。 また、C-x 0 で現在カーソルがあるウインドウを消去、 C-x 1 で現在カーソルがあるウインドウ以外のウインドウをすべて消去します。 C-x o (Other-window)を入力すると、他のウインドウにカーソルが移動します。 当然、ウインドウが一つしか開かれていない時は何も起こりません。 また、マウスで移動したいウインドウを直接左クリックしてウインドウを選択すること も出来ます。
C-x 5 o (other frame)で別のフレームにカーソルを移すことが 出来ます。(もちろんマウスで直接移動させることも出来ます) 開いたフレームを消去するコマンドは C-x 5 0(delete-frame)です。
C-h を押すとヘルプモードに入ります。ただし、これはバックスペースに 割り当てている環境が多いようです。このばあいは、M-x help-for-help を 用いて下さい。 この状態からいろいろなキーを押すことで各種のヘルプを見ることが出来ます。
キー操作 コマンド名 動作 ------------ -------------------- --------------------------------- C-h b describe-bindings 現在のキー割当の一覧を表示する C-h i info Infoという詳しい説明を開く C-h C-k key Info-goto-emacs-key-command-node keyが実行するコマンドについて Infoファイルを開いて説明する C-h C-k comm Info-goto-emacs-command-node コマンドについて、Infoファイルを 開いて説明する
info (M-x info)は Mule の正式なドキュメントを含んでいます。 日本語の部分もあるので、目を通して損はないでしょう。
なお、この info は、GNU のツール共通のドキュメントツールです。
きちんと設定してあれば、ここからさまざまなコマンドのドキュメントを参照
できるでしょう。
(通常は、/usr/local/info に info ファイルをおいて、/usr/local/info/dir に
項目を追加すればその info を info コマンドまたは mule の M-x info から
参照できます)
コマンドの直接実行
Mule における全ての操作はコマンドを一つ一つ実行することで行なわれています。
たとえカーソルを右に動かすだけでも forward-char というコマンドを 実行しています。大抵のコマンドは C-f のように、キーボードに 割り当てられています。
割り当てられていないコマンドを実行する時は、 M-x を押すことでコマンド入力状態になります。ここでコマンドの名前を 直接入力すれば、コマンドが実行されます。これはこの文書中の いろいろな所で使われています。
テキスト編集操作
キー操作 コマンド名 動作 -------- ----------- ----- C-p previous-line 前行にカーソルを移動 C-n next-line 次行にカーソルを移動 C-f forward-char 左にカーソルを移動 C-b backward-char 右にカーソルを移動 C-v scroll-up 前に一画面分進む M-v scrool-down 後ろに一画面分戻る C-a biginning-of-line 行の最初に移動 C-e end-of-line 行の最後に移動 M-< biginning-of-buffer バッファの最初に移動 M-> end-of-buffer バッファの最後に移動 C-l recenter カーソルが画面の中央にくるよう再描画 C-d delete-char カーソル位置の文字を削除 Delete delete-backward-char カーソルの左側の文字を削除 C-k kill-line カーソル位置から行末まで削除 C-y yank 最後に削除されたテキストを取り込む C-@ or C-SPC set-mark-command カーソル位置をポイントする C-w kill-region リージョンを削除する M-w copy-region-as-kill リージョンを記憶する C-s iserch-forward 順方向にインクリメンタルサーチする C-r iserch-backward 逆方向にインクリメンタルサーチする M-% query-replace 確認付の置換
ウインドウ、バッファの編集操作
キー操作 コマンド名 動作 --------- -------------- C-x C-f find-filexxi ファイルをバッファに読み込む C-x i insert-file カーソル位置にファイルを読み込む C-x C-s save-buffer カレントバッファをファイルにセーブ C-x C-c save-buffers-kill-emacs Mule を終了する C-x C-w write-file ファイル名を指定してセーブ C-x b switch-to-buffer バッファを選択する C-x C-b list-buffers 現在のバッファリストを表示する C-x 2 split-window-vertically ウインドウを縦に2分割する C-x 3 split-window-horizontally ウインドウを横に2分割する C-x 1 delete-other-windows カレント以外の全ウインドウを消去する C-x 0 delete-window カレントウインドウを消去する C-x ^ enlarge-window カレントウインドウを縦方向に拡大する C-x 5 2 make-frame 新たにフレームを作る C-x 5 o other-frame 別のフレームに移る C-x 5 0 delete-frame フレームを消去する