Muleの使い方

contents

  1. はじめに
  2. エディタとは
  3. Mule とは
  4. Mule の操作方法
    1. 起動
    2. ちょっとしたこと
    3. 画面構成
    4. 文字を入力する
    5. 基本操作
      1. カーソル移動
      2. 削除
      3. 終了
  5. 編集機能
    1. 中止コマンド
    2. アンドゥ
    3. 文字検索
    4. 文字置換
    5. テキストの削除と貼り付け
    6. ブロックのカット&ペースト
    7. マウスを使う
  6. バッファとウインドウについて
    1. ファイル操作
    2. バッファの操作
    3. ウインドウの分割
    4. 新たなフレームを開く
  7. ヘルプ
  8. コマンドの直接実行
  9. 編集操作一覧

はじめに

この文書は、UNIXでよく用いられているエディタである mule に ついて簡単な使用方法を説明しています。 この文書は豊橋技術科学大学コンピュータクラブ内で 行われた講習会のテキストを一部修正して作成したものです。

エディタとは

ここでいうエディタとは、「テキストエディタ」のことで、コンピュータ上 で文字を入力、編集するためのツールです。ワープロも広い意味ではエディタといえ ますが、ふつうはプレーンなテキスト、つまり特殊な制御コード (倍角、拡大、行送りなど)が入っていない文書をつくるためのものを エディタといいます。

設定ファイルを書いたり、レポートを書いたり、メールを書いたりなど、 コンピュータを使う上でエディタは非常に重要なツールの一つです。

なおMS-DOS上での有名なエディタとしては、MIFESやVZなどがあげられます。 MS-Windowsでは``メモ帳''がこれに相当するでしょう。


Contents/ Top Page

Mule とは

UNIX上で動くエディタとしては昔からviが広く使われてきました。 ところがこれは日本語の入力ができないものが多く、日本語入力が可能なエディタが 求められたのです(なお、現在のviは日本語入力が可能なものもあります)。 そこに登場したのが NEmacs (Nihongo Emacs)です。 海のむこうで作られた Emacs というエディタに、日本語入力に必要な機能を プラスして作られていました。

Mule は Nemacs を発展させたもので Multilingual Enhancement of GNU Emacs の意味です(どこからどの文字をとったのかは分からない……)。 Mule は「多言語」というところがみそで、日本語以外にも 韓国語、中国語、欧州や東南アジアの言語まで表示・編集することができます。 最近のバージョンでは、X window system 上での マウスを使った操作などの機能も組み込まれています。

Mule(Emacs) は超多機能なエディタで、文書の入力だけでなく、 メールやニュースの読み書き、はてはWWWの参照までなど さまざまな機能を持っています。Lispの処理系を内蔵しており、どんどん 拡張されています。Mule はエディタでなく環境だといってもいいでしょう。


Contents/ Top Page

Mule の操作方法

起動

まずは起動方法です。 編集するファイル名を後ろに書いて実行します。 ファイル名は、すでに作ってあるものはそのファイルを読み込み、 そこにないファイル名のときは新規編集としてファイルを作ってくれます。

% mule filename

ファイル名は好みでつければいいのですが、 できればファイル名から内容が想像できるようなものにしましょう。 そしてファイル名には、拡張子をつけておきましょう。 拡張子とは、そのファイルの種類をあらわすためにつかわれ、 主な拡張子としては次のようなものがあります

拡張子		ファイルの種類
----------	----------------------------
.txt/.doc	テキストファイル
.c		C言語のソースファイル
.tex		TeX の文章ファイル 
.html		HTML で書かれた文書
.com/.exe	DOS/WINDOWS での実行ファイル

ちょっとしたこと

これから Mule を使っていくうえで、ちょっと覚えていてもらいたいことです。

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
としましょう。あとは画面の指示にしたがって下さい。

画面構成

うまく起動すると、ウインドウの中がかわったと思います。 ウインドウの下の方に、色が逆になっている一行が出ています。 これを境目にして、上からバッファ、モードライン、エコー領域になります。 ここでバッファというものを説明しましょう。 Mule では、ディスク上のファイルに対して直接編集を行なうのではなく、 いちどバッファと呼ばれるメモリ上の領域に対して行ないます。 実際のファイル編集では、ファイルの内容をバッファに読み込み、 そのバッファに対して編集作業をして、編集が終ったバッファの内容を ファイルに書き込みます。複数のバッファを同時に編集することも可能です。 モードラインは、バッファの状態などを表示してくれるところです。 では、さきほど起動した 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 とのやり取りを おこなうための領域です。これは単にミニバッファとも呼びます。

文字を入力する

入力したい文字をキーボードから打ち込めば、その文字が画面に表示されます。 Mule の標準の設定では、ワープロなどでいうところの``挿入モード''になって いるので、入力した文字がそのままカーソル位置に挿入されます。 入力した文字がウインドウの端までくると、
first second third fourth fifth sixth seventh eighth ninth tenth eleven\
th twelveth
ウインドウの右端に \ を表示して折り返します。 画面には2行に見えますが、 Mule のなかでは1行として扱われます。

基本操作

文字を入れる方法だけでは、打ち間違えた時や書き直したいとき、 さらに終りかたが分からないと困りますので、最低限の操作方法をまず覚えましょう。

カーソル移動

Mule のウインドウのなかで色の反転した小さな四角が出ていることでしょう。 これがカーソルです。動作については、文字を入力しているときに見ていれば 分かっていただけると思います。

先ほども書きましたが、 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		カーソル位置から行末まで削除  

終了

編集も終り、 Mule を終了させたいと思ったら、
キー操作	終了の仕方
--------	--------------
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 で文字を入力できるようになりました。 しかしこれは必要最低限の機能なので、このあとの編集機能についてを読んで下さい。


Contents/ Top Page

編集機能

中止コマンド

C-g というコマンドで、入力を必要とするようなコマンドを 中止することができます。

例えば、コマンドの引数を入力している途中や、2つ以上のキー入力を必要とする コマンドを入力している最中の他、間違って自分の知らない変なコマンドを 打ち込んでしまって戻れないとき、それをやめたくなったら、 C-g を使えば良いのです。

アンドゥ

C-x u は、UNDOを行なうコマンドです。

アンドゥとは、一回前に行なった編集作業を取り消して、編集前の状態に戻すコマンド です。当然アンドゥを複数回行なえば、さらに前の状態へ戻って行くことができます。 アンドゥをさらに取り消して、先の状態に進めたい場合は、 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-k で、カーソル位置から行末まで削除(カット)を行ないます。 ここで削除された文字列は一時的にカットバッファに記憶されています。そこで、 C-y で、記憶したテキストをカーソル位置に貼り付ける(ペースト)ことができます。 この一連の操作を「カット&ペースト」と呼びます。

ブロックのカット&ペースト

まとまった範囲をカット&ペーストする場合の方法です。

まず、削除したい範囲の先頭の文字にカーソルを合わせます。 そして C-@ または C-SPC を押して、その位置をマークします。 このときカーソル位置の文字も範囲の対象となります。

次に削除したい範囲の終りのところにカーソルを合わせます。 ここでブロック削除の C-w で削除します。 これにより、最初にマークした位置から、カーソル位置までの範囲 (これをリージョンと呼びます)が削除され、カットバッファに記憶されます。 このときはカーソル位置の1文字前までが対象となりますので注意して下さい。 また、 C-w ではなく M-w を押すことにより削除を行なわずにカットバッファに コピーすることができます。

そして移動させたい場所の先頭にカーソルを合わせて、 C-y でその内容が ペーストされます。

キー操作		効果
----------		---------------------------------------------
C-@ または C-SPC	ブロック先頭をマーク
C-w			マークした位置からカーソルの直前までを削除
M-w			マークした位置からカーソルの直前までを記憶
C-y			記憶された内容をペースト

マウスを使う

Mule ではマウスを使った編集が可能です。 カーソルの移動は、移動したい場所をマウスカーソルで示して左ボタンを押す (左クリックといいます)ことによって行います。 C-SPC などで行なう範囲指定も、始点をマウスカーソルで示して左クリック、 ボタンを押したままマウスを動かして(ドラッグといいます)範囲を指定して、ボタン を離すだけで、範囲指定とカットバッファへのコピーを同時に行うことが出来ます。 また、ペーストも、ペーストしたい位置にマウスカーソルを動かして真ん中クリッ クをすることで可能です

このカット&ペーストは X Window System の Selection の機能を使用しており、kterm などとの相互のカット&ペーストが可能です。

バッファとウインドウについて

Mule ではウインドウを複数に分割し、それぞれにバッファを開き、 同時に編集することができます。
用語について
-----------------------------------------------------------------
フレーム	Window System での 1つのウィンドウ
ウィンドウ	Mule の編集エリアを切り分けたそれぞれの領域。
		フレームは複数のウィンドウに切り分けられる
バッファ	編集対象となっている文書のこと
		バッファをウィンドウに呼び出すことで編集可能になる。
		バッファはメモリの許す限りいくらでももてる
カレント〜	現在操作対象になっているもの

ファイル操作

C-x C-f で新しいバッファを開いて、ファイルを読み込みます。 編集するファイル名を入力してください。 新しいバッファはカレントウィンドウに呼び出されます。 その他につぎのようなファイル操作があります。
キー操作	効果
---------	---------------------------------------------
C-x C-f		バッファを開く
C-x i		カーソル位置にファイルを読み込む
C-x C-s		カレントバッファをファイルにセーブする
C-x C-w		ファイル名を指定してセーブする

バッファの操作

C-x b でバッファを切替えます。C-x b を押すと、
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 2 でウインドウを縦に、C-x 3 でウインドウを横に分割します。

分割したバッファの境界を動かすには、C-x ^ を入力するか、境界部分を マウスでドラッグします。 また、C-x 0 で現在カーソルがあるウインドウを消去、 C-x 1 で現在カーソルがあるウインドウ以外のウインドウをすべて消去します。 C-x o (Other-window)を入力すると、他のウインドウにカーソルが移動します。 当然、ウインドウが一つしか開かれていない時は何も起こりません。 また、マウスで移動したいウインドウを直接左クリックしてウインドウを選択すること も出来ます。

新たなフレームを開く

いままでは一つのフレームを操作していましたが、 C-x 5 2 (make frame)で新たなフレームを開くことが出来ます。 新たに開いたフレームは、あたかも複数の Mule を開いたかのように操作できます。

C-x 5 o (other frame)で別のフレームにカーソルを移すことが 出来ます。(もちろんマウスで直接移動させることも出来ます) 開いたフレームを消去するコマンドは C-x 5 0(delete-frame)です。


Contents/ Top Page

ヘルプ

Mule の持つ各種のヘルプ機能について説明します。

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 を押すことでコマンド入力状態になります。ここでコマンドの名前を 直接入力すれば、コマンドが実行されます。これはこの文書中の いろいろな所で使われています。


Contents/ Top Page

編集操作一覧

ここで今まで説明した編集操作の一覧を示します。

テキスト編集操作

キー操作	コマンド名		動作
--------	-----------		-----
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		フレームを消去する

Contents/ Top Page