Emacs 入門ガイド. 本ファイルの著作権については最後を御覧下さい。 Emacs のコマンドを入力するには、一般にコントロールキー(キートップに CONTROL とか CTRL とか CTL と書いてある)やメタキー(キートップに META とか ALT とか EDIT と書いてある)を使います。そこで、CONTROL とか META とかを書く代わりに、次のような記法を使うことにします。 C-<文字> コントロールキーを押したまま、<文字>キーを押します。例えば、 C-f はコントロールキーを押しながら f のキーを押すことです。 M-<文字> メタキーを押したまま、<文字>キーを押します。もしメタキーがな い場合は、エスケープキーを押してから離し、それから<文字>キー を押します。以降エスケープキーのことを と書きます。 !重要!: Emacsを終了するには、C-x C-c をタイプします。 ">>" で始まる行は、その時何をすべきかを指示しています。例えば、 <> [このページの途中の空白行はわざと入れてあります。ガイドは下に続きます。] >> では C-v (次の画面を見る)をタイプして次の画面に進んで下さい。 (さあ、やってみましょう。コントロールキーを押しながら v です) 以降、一画面を読み終えるたびに同様にして次の画面に読み進んで下さい。 前の画面と次の画面とでは、表示される内容に何行かの重なりがあります。こ れは、表示されている内容が連続していることがすぐ判るようにするためです。 まずは、ファイルの中を移動して行く方法を知る必要があります。C-v によっ て次の画面に進むことはもう判りました。前の画面に戻るには、M-v (メタキー を押しながら v、もしくは を押して離して v)です。 >> 何度か M-v と C-v を試して下さい。 *ここまでの要約 ================ ファイルを画面毎に見て行くには、次のコマンドを使います。 C-v 次の画面に進む M-v 前の画面に戻る C-l 画面を書き直す。このとき、カーソルのある行が画面の中央に くるようにする。(C-1 じゃなくって C-L ですよ!) >> カーソルを見つけ、その近くにどんな文章が書かれているかを覚え、 それから C-l をタイプして下さい。 カーソルがどこに移動したか、その近くの文章はどうなったかを調べ てみましょう。 もう一度 C-l をタイプして下さい。今見ていた文章は画面の上端に移 動します。 そして、もう一度 C-l をタイプして下さい。今度はその文章が画面の 下端に移動します。 もしあなたのキーボードに PageUp や PageDn キーがあるなら、それらも画面 を移動するのに使えます。でも、C-v や M-v を使う方が効率的です。 *カーソル移動の基本 ======================== 画面毎の移動はできるようになりました。今度は、画面の中で、特定の場所に 移動するための方法を憶えましょう。 これにはいくつかのやり方があります。矢印キーを使うこともできますが、手 をキーボード上の標準位置から大きく動かさずに、 C-p、C-b、C-f、C-n を使 う方が効率的です。これらは4つの矢印キーと同じ働きをします。図で書けば、 次のようになります。 前の行,C-p : : 前の文字,C-b .... 現在のカーソル位置 .... 次の文字,C-f : : 次の行,C-n >> C-n と C-p でカーソルを上図の真中の行に動かして下さい。それから C-l をタイプして図の全体が画面中央にくるようにしてみましょう。 これらのコマンドはそれぞれ、Previous, Next, Backward, Forward の頭文字 になっているので、憶えやすいでしょう。これらは、カーソル移動の基本コマ ンドであり、頻繁に使うものです。 >> C-n を何回かタイプし、この行までカーソルを移動させましょう。 >> C-f を使って行の中ほどに移動し、C-p で何行か上に移動させましょう。 カーソルの位置の変化に注意して下さい。 各行の最後には(目には見えない) Newline 文字があります。これは次の行 との区切りを示すためです。普通はファイルの最後の行にも Newline を付け るべきです(もっとも Emacs はそれを強制はしませんが)。 >> 行の先頭で C-b をタイプしてみましょう。カーソルは前の行の末尾に移動 するはずです。これは C-b が前の Newline 文字を越えて戻ったからです。 同様に C-f はカーソルを Newline 文字を越えて次に進めることができます。 >> さらにもう少し C-b をタイプしてカーソル移動の感じを把んで下さい。 今度は C-f で行末まで進んで下さい。 さらにもう一度 C-f をタイプして次の行に進んで下さい。 画面の先頭や末尾を越えてカーソルを移動させようとすると、その方向にある 文章が画面の中に移動して来てます。これを「スクロール」と呼びます。画面 がスクロールすることによって、カーソルを移動させても、カーソルは常に画 面内にあるようにされます。 >> C-n を使って、カーソルを画面の下端より下に移動させてみなさい。何 が起こりましたか? 一文字単位の移動ではまどろっこしいなら、単語単位で移動することもできま す。M-f ( f) で一単語先へ、M-b ( b) で一単語前へ移動します。 注意: 日本語については、単語の切れ目を認識することはできませんが、疑 似的な文節を単語の切れ目としています。 >> M-f や M-b を何回か試してみましょう。 単語の中程にいる時は、M-f はその単語の終わりまで進みます。もし単語間の 空白にいる時には M-f は次の単語の終わりまで進みます。M-b も同様です、 方向は逆ですが。 >> M-f と M-b を C-f と C-b を交えながら数回試し、カーソルが単語中にあ る時と、単語と単語の間にある時の動きを調べて下さい。 C-f と C-b に対する、M-f と M-b の類似性に注目しましょう。多くの場合、 メタキーは文書を構成するユニット(単語、文、段落)に対する操作に使い、 コントロールキーはそれよりももっと基本的な対象(文字とか行等)に対する 操作に使います。 この類似性は行と文の関係にもあります。C-a と C-e はそれぞれ行頭と行末 に移動し、M-a と M-e はそれぞれ文頭と文末に移動します。 >> C-a を2回、それから C-e を2回試しましょう。 M-a を2回、それから M-e を2回試しましょう。 C-a を繰返してもそれ以上移動しませんが、M-a を繰り返すとどんどん前の文 頭に戻っていきます。この部分では類似性が破れていますが、まあこれが自然 な動作ではないでしょうか。 文章中でカーソルがある位置を「ポイント」と呼びます。言いかえれば、カー ソルは、文章のどこにポイントがあるかを画面上で示しているのです。 以下に単純なカーソル移動操作について要約します。このなかには、単語や行 単位での移動コマンドも含まれています。 C-f 一文字次に進む C-b 一文字前に戻る M-f 一単語次に進む M-b 一単語前に戻る C-n 次の行に移動 C-p 前の行に移動 C-a 行頭に移動 C-e 行末に移動 M-a 文頭に移動 M-e 文末に移動 >> これら全部を何度か試して練習しましょう。 どれも頻繁に使うコマンドです。 あと二つ、重要なカーソル移動コマンドがあります。ファイルの先頭に移動す る M-< と、ファイルの末尾に移動する M-> です。 大抵の端末では "<" キーは "," キー(コンマ)の上にあり、それをタイプす るにはシフトキーを使う必要があります。したがって M-< をタイプするには、 メタキーとシフトキーとコンマキーを同時に押さねばなりません。 >> M-< を試して、この入門ガイドの先頭に移動しましょう。 それから、C-v を何度か使ってここまで帰ってきてください。 >> M-> を試して、この入門ガイドの末尾に移動しましょう。 それから、M-v を何度か使ってここまで帰ってきてください。 もし端末に矢印キーがあれば、それを使ってカーソルを動かすこともできます。 けれど、次の3つの理由から C-b, C-f, C-n, C-p を覚えることを勧めます。 第一に、これらはどんな端末でも使えます。第二に、Emacs を使うのが上達し てくれば、これらのコントロール文字を打つ方が、矢印キーを打つよりずっと 速いことが分るでしょう(手を通常の位置から大きく動かさないでよいので)。 最後に、一度これらのコントロール文字を打つ習慣を付けたら、もっと進んだ カーソル移動コマンドも簡単に覚えることができます。 Emacsの大抵のコマンドには数値引数を与えることができます。大抵の場合こ の数値で繰り返し回数を指示することになります。数値引数を与えるには、コ マンドを入力する前に C-u に続いて数字を何桁かタイプします。もしメタキー が使えるなら、メタキーを押しながら数字をタイプすることもできます。でも やはり C-u を覚えることを勧めます。それはどんな端末でも使えるからです。 数値引数は「前置引数」とも呼びます。実行したいコマンドの前にタイプする からです。 例えば C-u 8 C-f とタイプすると8文字分先に移動します。 >> 適当な数値引数を C-n あるいは C-p に与え、一回のコマンドでなるべく この行の近くに来るようにしてみましょう。 大抵のコマンドは数値引数を繰り返し回数と解釈しますが、中には例外もあり ます。たとえば、コマンドによっては(これまでに学んだコマンドはどれも違 いますが)、前置引数があるかないかだけが問題で、それがあるときは、実際 に与えた数値には関係なく、通常とは異なる働きをします。 C-v や M-v はまた違ったタイプの例外です。この場合、指定された数の行だ け画面をスクロールさせることになります。例えば C-u 8 C-v は画面を8行 上にスクロールさせます。 >> C-u 8 C-v を試してみましょう。 画面が上に8行スクロールしたはずです。また画面を下にスクロールさせるには M-v に引数を与えればよいのです。 もし X や MS-Windows のウィンドウシステムを使っているのなら、スクロー ルバーと呼ばれる縦長の四角いエリアが Emacs のウィンドウの左右どちらか かの端にあるはずです。ウィンドウの両端には同じく縦長の四角い「フリンジ」 と呼ばれるエリアもありますので、混乱しないで下さい。フリンジは継続行を 示す文字やその他のシンボルを表示する場所です。スクロールバーは左右どち らか一方のみの一番外側にあるものです。スクロールバーの中をマウスでクリッ クすれば、画面をスクロールさせることができます。 >> スクロールバーの中でマウスの真中のボタンを押してみましょう。ボタン を押した位置で決まる文章の位置まで画面がスクロールします。 >> スクロールバーの中で真中のボタンを押したままマウスを上下に動かして みましょう。それに合せて画面がスクロールするのが分るはずです。 もし、マウスにホイールボタンがあるなら、それを使ってもスクロールでき ます。 * もし Emacs が反応しなくなったら ================================== もし Emacs がコマンドに反応しなくなったら、C-g をタイプすることでEmacs を安全に止めることができます。C-g でとても時間のかかるコマンドを止める ことができます。 C-g はまた、数値引数を取り止めたり、2つ以上のキー入力を必要とする コマンドを入力している最中にそれを取り止めたりするのにも使えます。 >> C-u 100 とタイプして引数 100 を設定してから C-g を打ってみましょう。 それから C-f を打って下さい。一文字しか進まないはずです。なぜなら、 C-g が数値引数をキャンセルしたからです。 間違って をタイプしてしまった時も、C-g でそれを取り消せます。 *使用不可 (disabled) コマンド ================================== いくつかのコマンドは初心者が間違って使わないよう使用不可になっています。 もし何れかの使用不可コマンドをタイプしたら、それはどういうコマンドかが 表示され、本当にそれを実行したいのかどうか訊ねられます。 もし本当に実行したいのならスペースキーをタイプして下さい。もし実行した くなければ n とタイプして下さい。 >> C-x C-l とタイプしてみましょう(これは使用不可コマンドです)。 それから n とタイプしましょう。 *ウィンドウ ============ Emacs は幾つものウィンドウに、それぞれ個別の文章を表示することができま す。どうやって複数のウィンドウを操作するかは後程説明しますが、ここでは、 どうやって余分なウィンドウを消して、元の一つのウィンドウの状態に戻るか を説明します。それは簡単です。 C-x 1 ウィンドウを1つにする(つまり他のウィンドウを全部消す) つまり C-x を打ってからさらに 1 を打つのです。このコマンドはカーソルの あるウィンドウを画面全体に広げます。他のウィンドウは全部消えます。 >> カーソルをこの行に持ってきて、C-u 0 C-l とタイプしてみて下さい。 >> 続いて C-h k C-f とタイプして下さい。 新しいウィンドウが C-f コマンドの説明文を表示するために現れるととも に、このウィンドウがどのように縮むかを見て下さい。 >> C-x 1 とタイプして、説明文を表示していたウィンドウが消えるのを見て下さい。 このコマンド (C-x 1) はこれまでに覚えたコマンドとは異なり、2つのキー からなります。最初のキーが Control-x です。このキーは、多くのコマンド を始めるための最初のキーです。それらのコマンドの多くはウィンドウ、ファ イル、バッファ、それらに関係するものを操作するためのもので、2あるいは 3、4個のキーを必要とするものがあります。 *挿入と削除 ============ 文章を入力したければ、単にそれをタイプして下さい。Emacs は、目に見える 文字(A, 7, * 等)を文章であるとみなすので、それらはそのまま挿入されま す。(改行キー)をタイプすれば改行文字が挿入されます。 直前に入力した文字を削除するには、 をタイプします。 は、Emacs 以外で、最後にタイプした文字を削除するために使うキーボード上 のキーです。通常は、 キーの上方にある大きめのキーで、 "Delete" とか "Del" とか "Backspace" と書いあります。 もし、そのそれが "Backspace" と書いてあるなら、それが キーです。 その場合、他の場所に "Delete" と書いてあるキーがあるかもしれませんが、 それは キーではありません。 より一般的に言うなら、 は現在カーソルのある位置の直前の文字を 削除します。 >> 文字をいくつかタイプし、それからそれらを を使って削除し て下さい。このファイルを変更することを気にする必要はありません。オ リジナルの入門ガイドファイルは変更されませんから。今見ているファイ ルはあなたのためのコピーです。 文章の一行が画面に収まらない程長くなった場合、その行は画面上の次の行へ と継続(continued)されます。画面の右端(右側のフリンジエリア)の backslash 文字 「\」 (あるいは、もしウィンドウシステムを使っているなら、 小さな曲った矢印)は、その行が継続されていることを表しています。 >> 画面の右端まで文章を入力し、さらに入力を続けて下さい。 継続行ができるのが分るでしょう。 >> を使って1行に収まるところまで現在の行を短くしてみてくださ い。継続行は消えます。 改行文字も他の文字と同じように削除できます。2つの行の間の改行文字を消 すとそれらの行が合わさり1つの行になります。もしその合わさった行が画面 の幅よりも長い場合は、継続行となって表示されます。 >> カーソルを行の先頭に移動し、 をタイプして下さい。現在の行が その前の行とつながります。 >> をタイプして、今削除した改行文字をまた挿入して下さい。 Emacs のほとんどのコマンドは、繰り返しの回数指定できることを思い出して 下さい。これは、文字の挿入についても当てはまります。 >> C-u 8 * とタイプすると ******** が挿入されます。試してみましょう。 これで、Emacs で文章を入力し、また間違いを修正するもっとも基本的な方法 を学んだことになります。文字と同じ様に、単語や行も削除することができま す。削除操作について要約すると次のようになります。 カーソルの直前の文字を削除(delete) C-d カーソルのある文字を削除(delete) M- カーソルの直前の単語を消去(kill) M-d カーソル位置の後ろにある単語を消去(kill) C-k カーソル位置から行末までを消去(kill) M-k カーソル位置から文末までを消去(kill) と C-d に対する M- と M-d は、C-f と M-f で始まった類 似性をまた拡張します。ここで はコントロール文字ではありません が、まあ、それは気にしないで下さい。C-k と M-k の関係は C-e と M-e の 関係(行と文の対比)と同じです。 バッファのどの部分でも消去(kill)できる単一の方法があります。消去した い部分の始めか終りに移動し、 C-@ もしくは C-SPC をタイプします (SPC は スペースバーのことこです)。それから消去したい部分の反対の端に移動し、 C-w をタイプします。これでその部分が消去されます。 >> カーソルを前のパラグラフの最初の文字「バ」に移動させましょう。 >> それから C-SPC をタイプします。"Mark set" というメッセージが画面の 下端に出るはずです。 >> さらにカーソルを次の行の「終」に移動させます。 >> C-w をタイプしましょう。「バ」から「終」の直前までが消去されます。 「消去(kill)」と「削除(delete)」の違いに気をつけて下さい。消去した 文章は再度(どこにでも)挿入できますが、削除したものは再度挿入すること はできません(ただ下の章に書いてあるように undo はできます)。一旦消去 したものを再度挿入することを再入(yanking)と呼びます。一般に、大量の 文章を消すコマンドは、その文章を消去しますが(だから後で再入できます)、 一文字とか空白行や空白文字のみを消すコマンドは、それらを削除します(だ からそれらは再入できません)。 >> 空行でない行の先頭にカーソルを移動させて下さい。 それから C-k でその行の文章を消去して下さい。 >> もう一度 C-k をタイプしてください。その行に続く改行文字が消されるの が分りましたか。 一回目の C-k はその行の文章を消し、2回目の C-k はその行自身を消してそ の先の行を上げてきます。C-k の数値引数の扱いは特殊です。引数分の行(行 の内容と行自身)を消します。これは単なる繰り返しではありません。C-u 2 C-k は2つの行とそれぞれに続く改行文字を消しますが、C-k を2度タイプし てもそうはなりません。 消去した文章を復活させる操作を再入(yanking)と呼びます。消した文章は、 元と同じ場所にでも元とは違う場所にでも、さらには別のファイルにも再入で きます。また、何度も再入することで文章のコピーを複数作ることもできます。 再入のためのコマンドは C-y です。これは、最後に消去した文章を現在カー ソルがある位置に再入します。 >> 試して下さい。C-y をタイプして最後に消去した文章を再入しましょう。 C-k を続けて実行すると、消去した各行は全部まとめて保存されるので、一回 の C-y でそれらの行が全部再入されます。 >> C-k を何度か続けてタイプしてみて下さい。 さあ、消去した文章を再入しましょう。 >> C-y をタイプして下さい。次にカーソルを数行下に移動させ、また C-y を タイプして下さい。どうやって文章をコピーするか分りましたね。 過去に消去した文章を再入したいのに、別の文章をその後消去した時はどうす ればよいでしょう? C-y は最後に消去したものを再入します。でもそれでよ り以前に消去した文章がなくなるわけではありません。そういう文章は M-y で再入できます。C-y で最後に消去した文章を再入した直後にM-y をタイプす ると、その再入された文章はそれ以前に消去したものに変更されます。何度も 続けて M-y をタイプすると、さらに前に消去した文章を呼び戻せます。望み の文章に行き当ったら、それはそのままにして編集作業を続ければよいのです。 ある回数だけ M-y を繰り返したら、また最初(つまり最後に消去した文章) に戻ります。 >> 一行消去し、別の行に行ってその行を消去して下さい。 それから C-y で2番目(最後)に消去した行を再入して下さい。 続いて M-y でその行を最初に消去した行に変えて下さい。 M-y を続けどうなるか見てみましょう。2番目に消去した行が戻って来る まで M-y を繰り返し、さらにもう何度か M-y をしましょう。 もし望みなら M-y に正もしくは負の数値引数を与えても良いでしょう。 *取り消し(UNDO) ================ もし、文章を変更した後でその変更は間違いだったと思ったら、取り消し (undo)コマンド C-x u でその変更を取り消すことができます。 通常、C-x u は一つのコマンドによる変更を取り消します。続けて何度も C-x u を行えばそのたびに一つ前のコマンドが取り消しになります。 ただしこれには例外が二つあります。まず、文章を変更しないコマンドは取り 消しになりません。カーソル移動やスクロールのコマンドがそれに当たります。 それから、文字の挿入(自己挿入コマンド)は 20 個一まとめで扱われます。 これは文字の挿入を取り消すための C-x u の回数を減らすためです。 >> この行をC-kで消して下さい。そして、C-x u で戻して下さい。 C-_ も取り消し(undo)を行なうコマンドです。機能は、C-x u と同じですが、 続けて何度もタイプする場合はより便利です。C-_ の問題は、キーボードによっ てはどうやってタイプするのか分りづらい事です。だから C-x u があるので す。端末によっては、コントロールキーを押したまま / をタイプすると C-_ をタイプしたことになります。 C-_ や C-x u は数値引数を繰り返し回数と解釈します。 文章の削除も文章の消去と同様に取り消せます。削除と消去の違いは再入でき るかどうかの違いだけで、取り消しには関係ありません。 *ファイル ========== 編集している文章を恒久的な物にするには、それをファイルに保存しなければ なりません。さもないと、Emacs の終了と同時にそれはなくなってしまいます。 文章をファイルにセーブ(保存)するには、文章を入力する前に、まずファイ ルを開かなければなりません(ファイルを "visit" するとも言います)。 ファイルを開く (find) とは、そのファイルの中身を Emacs で見ることを意 味します。色々な意味で、それはあなたがファイル自身を編集しているかの様 です。しかし、Emacs で行う変更はファイルをセーブする迄は恒久的なものと なりません。これは、それを望まないのに、途中まで変更したファイルが残る のを避けるためです。セーブした後でさえ、変更したものが間違っていた時の ために、元のファイルは名前を変えて残されます。 画面の一番下近くに、"-J:-- TUTORIAL.ja" の様な文字列で始まり "----" で 終っている行があるはずです。通常は画面のこの部分に現在開いているファイ ルの名前が表示されています。今は "TUTORIAL.ja" という名のファイル(こ れは Emacs 入門ガイドのあなた用のコピーです)を開いています。Emacs で ファイルを開くとそのファイルの名前がこの部分に現れます。 ファイルを開くためのコマンドはこれまで学んだものとは違い、ファイルの名 前を指定しなければなりません。これを、コマンドが「端末から引数を読み込 む」と言います。今の場合は引数はファイル名です。次のコマンド C-x C-f ファイルを開く (find) をタイプすると、Emacs はファイル名を聞いてきます。タイプしたファイル名 は画面の最下行に表示されます。この最下行は、こういう入力のために使って いる時は、ミニバッファと呼びます。通常の編集コマンドでファイル名を編集 することもできます。 ファイル名の入力中(あるいはその他のミニバッファ入力中)に C-g によっ てコマンドをキャンセルできます。 >> C-x C-f をタイプしてから C-g をタイプしてみましょう。ミニバッファが 取り消され、それを使っていたコマンド C-x C-f 自体も取り消されます。 だから、ファイルは何も開かれません。 ファイル名を入力したら、キーをタイプし入力を完了させます。そう すると、C-x C-f コマンドが走り始め指定したファイルを開きます。ミニバッ ファは C-x C-f コマンドの終了とともに消えます。 ファイルの内容が画面に表示されると、その内容を変更することができます。 加えた変更を恒久的なものにしたければ、次のコマンドをタイプします。 C-x C-s ファイルをセーブする これは Emacs が保持している文章をファイルにコピーします。初めてこれを 実行するときは、元のファイルを新しい名前に付け替えるので、その内容は失 われません。その新しい名前は元のファイルの名前の最後に "~" をつけたも のです。 セーブし終わると、セーブしたファイルの名前が表示されます。割と頻繁にセー ブした方が良いでしょう(「自動セーブ」の節も参照のこと)。システムが落 ちてもせっかくの作業がパアにならないように。 >> C-x C-s とタイプしてこの入門ガイドのコピーをセーブして下さい。 画面最下段に "Wrote ...TUTORIAL.ja" と表示されます。 既存のファイルを開き、内容を見、編集することができます。存在しないファ イルを開くこともできます。Emacs で新しいファイルを作るには次のようにし ます。ファイルを開きます。最初は空っぽですね。文章を入力していきます。 ファイルをセーブしようとした時に初めて新しいファイルが作られ、今まで入 力した内容がそれに書き込まれます。それ以降は、あなたは既存のファイル (たった今作られたファイル)を編集していると思って下さい。 *バッファ ========== 2つ目のファイルを C-x C-f で開いても、最初のファイルは Emacs 内部に残っ たままです。そっちのファイルに戻るにはもう一度 C-x C-f でそのファイル を開けばよいのです。こうやって、幾つものファイルを Emacs で開くことが できます。 >> "foo" という名のファイルを作りましょう。C-x C-f foo です。 何か文章を入れ、編集し、C-x C-s で "foo" をセーブして下さい。 最後に C-x C-f TUTORIAL.ja とタイプし 入門ガイドに戻りましょう。 Emacs はファイルの内容をバッファ(buffer)と呼ばれるものの中に格納して います。ファイルを開くと新しいバッファができます。Emacs が現在持ってい るバッファのリストを見るには、次のようにタイプします。 C-x C-b バッファのリストを見る >> C-x C-b を試してみましょう。 各バッファがどんな名前になっているか、それが開いているファイルの名前が どうなっているか見て下さい。Emacs のウィンドウ内にある文章はどれも、い ずれかのバッファの一部です。 >> C-x 1 とタイプしてバッファリストを消しましょう。 バッファが複数あっても、ある時点ではその一つだけが「現在」のバッファで す。それはあなたが編集中のバッファです。もし他のバッファを編集したけれ ば、そのバッファに切替えなければなりません。ファイルを開いているバッファ に切替えるには、また C-x C-f でそのファイルを開けば良いでしょう。でも、 もっと簡単な方法もあります。C-x b コマンドです。このコマンドをタイプし て、バッファの名前を入力すれば良いのです。 >> C-x b foo とタイプして、 "foo" というファイルを開いている "foo" バッファに戻ってみましょう。それから C-x b TUTORIAL.ja とタイプして、このガイドに戻りましょう。 普通は、バッファの名前とそれが開いているファイルの名前(ディレクトリ名 の部分を除いて)は同じです。例外もあります。C-x C-b で作ったバッファリ ストは常に各バッファの名前を表示します。 あなたが Emacs のウィンドウで見る文章はどれも、いずれかのバッファの一 部です。バッファによっては対応するファイルが無いものもあります。例えば "*Buffer List*" という名前のバッファにはファイルがありません。このバッ ファはあなたが C-x C-b で作ったバッファリストを保持しているバッファで す。"*Messages*" というバッファもファイルを持ちません。このバッファは、 Emacs が最下行に表示するメッセージを保持しています。 >> C-x b *Messages* とタイプしてメッセージのバッファを見てみ ましょう。それから C-x b TUTORIAL.ja でこのガイドに戻って 下さい。 あるファイルの内容になんらかの変更を加え、それから他のファイルを開いて も、最初のファイルはまだセーブされません。変更は Emacs の内部、そのファ イルに対応するバッファの中に残ったままです。2番目のファイルのバッファ を作ったり、編集したりしても、最初のファイルのバッファには何の影響もあ りません。これはとても役に立ちますが、最初のファイルのバッファをセーブ する何か便利な方法が必要だということでもあります。 C-x C-s でセーブす るために C-x C-f で元のバッファに戻るのは厄介です。そこで次のコマンド を使います。 C-x s 何れかのバッファをセーブする C-x s は、まだセーブしていない変更があるバッファそれぞれについて、それ をセーブするかどうかを聞いてきます。 >> 一行文章を入力してから C-x s とタイプして下さい。 TUTORIAL.ja というバッファをセーブするかどうか聞いてくるはずです。 「はい」と答えるために "y" とタイプして下さい。 *コマンドの拡張 ================ Emacs には、コントロール文字やメタ文字に割当てられるよりもずっとずっと 多くのコマンドがあります。これらを扱うために、拡張(eXtend)コマンドを 使います。それには、以下の2つの種類があります。 C-x 文字による拡張。続けて一文字を入力します。 M-x 名前による拡張。続けてコマンドの名前を入力します。 これらは、一般的には便利だけれども、これまで見てきたものほどは頻繁に用 いられないコマンドです。C-x C-f (ファイルを開く)や C-x C-s(ファイル をセーブ)はこの仲間です。他に、C-x C-c(Emacs を終了)もそうです。C-x C-c に関しては、それまでに加えた変更が無くなるのを心配する必要はありま せん。Emacs を終了させる前に、変更された各ファイルをセーブするかどうか 聞いてきますから。 C-z は「一時的に」 Emacs を抜けるコマンドです。また同じ Emacs セッショ ンに戻ることができます。 それができるシステム上なら、C-z は Emacs を「中断」させます。つまり Emacs を終了することなく、コマンドシェルに戻ることができます。大方の標 準的なシェルなら、「fg」 コマンドもしくは 「%emacs」 によって Emacs を再開 できます。 「中断」機能を実装していないシステムでは、C-z は Emacs の下で走るサブ シェルを作り、他のプログラムを走らせてからまた Emacs に戻ることができ るようにします。この場合本当に Emacs から抜け出るわけではありませんの で、シェルコマンドの 「exit」 がそのサブシェルから Emacs に戻る普通のや り方です。 C-x C-c はログアウトしようと思う時に使うものです。メールツール(mail コマンド等)やその他の様々なアプリケーションプログラムが起動した Emacs から抜け出る場合に使うのも正しいやり方です。これらのプログラムは Emacs の中断にどう対処して良いか知らないでしょうから。 C-x コマンドはたくさんあります。これまでに、以下を学びました。 C-x C-f ファイルを開く(Find) C-x C-s ファイルのセーブ(Save) C-x C-b バッファのリストアップ C-x C-c Emacs を終了 C-x 1 ウィンドウを1つにする(つまり他のウィンドウを全部消す) C-x u 取り消し 名前による拡張コマンドには、あまり使わないものや、特定のモードでしか使 わないものがあります。たとえば replace-string ですが、これは文字列を置 換するものです。M-x をタイプすると、Emacs は画面の最下行に M-x と表示 し入力を促すので、そこにコマンドの名前(この場合 "replace-string")を 入れなければなりません。"repl s" とだけタイプすると Emacs がコマ ンド名を補完してくれます。( はタブキーです。普通は、キーボードの 左端、CapsLock もしくは Shift キーの近くにあります。)コマンド名を入れ たら を打って下さい。 "Replace string" コマンドには引数が二つ必要です。どの文字列をどう置換 するかです。各引数を入力するたびに を打って下さい。 >> カーソルをここから2行下の空行に移動させて下さい。 M-x repl schangedAltered とタイプしましょう。 この行がどう変わるか(changed)見ましょう。あなたはカーソル以降全部の c-h-a-n-g-e-d という語を "altered" に変えたのです。 *自動セーブ ============ ファイルに変更を加えてまだセーブしていない場合、それらの変更は計算機が クラッシュすると失われてしまう可能性があります。そういう事態を避けるた め、編集中の各ファイルについて自動セーブファイルが定期的に書かれます。 自動セーブファイルは頭とお尻に # が付いています。例えば "hello.c" とい うファイルの自動セーブファイルは "#hello.c#" です。通常の方法でファイ ルをセーブしたときに、そういう自動セーブファイルは消されます。 計算機がクラッシュした場合、自動セーブされた編集を回復させることができ ます。普通にファイル(編集していたもので、自動セーブファイルじゃありま せん)を開き、それから M-x recover file とタイプするのです。確 認を求めてきますので、yes とタイプし自動セーブされたデータを回 復します。 *エコーエリア ============== もしゆっくりとコマンドを打ったならば、画面の下のエコーエリアと呼ばれ る場所に打ったものが表示されます。エコーエリアは画面の最下行です。 *モードライン ============== エコーエリアのすぐ上の行は、モードラインと呼びます。モードラインはこん な風に見えるでしょう。 -J:**- TUTORIAL.ja (Fundamental)--L670--58%---------------- この行は Emacs の状態及び編集中の文章について有益な情報を与えてくれま す。 ファイル名についてはもう分っていますね。それはあなたが開いたファイルで す。-NN%-- は文章中の現在位置を示しています。文章の NN% が画面最上段よ り前にあるということです。もし文章の最初の行が画面にある時には --00%-- の代りに --Top-- と表示します。もし文章の最後の行が画面にある時には --Bot-- と表示します。もし画面に全部収まってしまうような短い文章を見て いるときには --All-- と表示します。 L とそれに続く数字は現在の行番号を示しています。 先頭近くの星印は、あなたが文章を変更したことを示しています。ファイルを 開いた直後や、セーブした直後は、その部分には星印の代わりにダッシュ 「-」 が表示されます。 括弧に囲まれた部分はどんな編集モードにいるかを示します。デフォルトは "Fundamental" というモード、これが現在のモードです。これは「メジャーモー ド(major mode)」の一例です。 Emacs には多くの種類のメジャーモードがあります。Lisp mode やText mode のように、どんなプログラム言語やどんな種類の文章を編集中かを意味するも のもあります。いつでも必ずいずれかのメジャーモードの状態になっています。 どのメジャーモードにいるのかは、モードラインの現在は "Fundamental" と 表示している部分を見れば分ります。 各メジャーモードは幾つかのコマンドに異なる振る舞いをさせます。例えば、 プログラムリスト中にコメントを入れるためのコマンドがあります。コメント の形式(シンタックス)は、プログラム言語によって異なり、メジャーモード は、それに対応する言語に合った形式でコメントを挿入します。各メジャーモー ドは拡張コマンドの名前になっています。つまりその拡張コマンドを使ってメ ジャーモードを切り換えるのです。例えば、M-x fundamental-mode というの は Fundamental モードに切り換えるためのコマンドです。 もし、通常の英語や日本語の文章(このファイルのような)を編集するのなら ば、Text mode を使いましょう。 >> M-x text-mode とタイプしてみて下さい。 心配しないで。これまで学んだコマンドはたいして変わりませんから。だけど、 M-f や M-b がアポストロフィ "'" を単語の一部だと解釈するようになったの が分るでしょう。以前の Fundamental モードでは M-f や M-b は "'" を単語 の区切りと見なしていました。 メジャーモードはこのように些細な違いを生みます。大概のコマンドはどのメ ジャーモードでも同じ働きをしますが、実際の動きは少しだけことなるのです。 現在のメジャーモードについての説明文を見るには C-h m とタイプします。 >> C-u C-v を一二度やってこの行を画面の上の方に持っていきましょう。 >> C-h m とタイプし、Text mode と Fundamental mode の違いをみましょう。 >> C-x 1 で Text mode の説明文を画面から消しましょう。 メジャーモードが「メジャー」というからには「マイナーモード」もあります。 マイナーモードはメジャーモードの代わりになるものではなく、それをちょっ とだけ修正するものです。各マイナーモードは、メジャーモードや他のマイナー モードに影響を与えずに、それだけをオンオフできます。つまり、マイナーモー ドを全く使わなかったり、一個だけ使ったり、いくつかを同時に使ったりでき るのです。 通常の文章を編集している時にとても便利なマイナーモードの一つにオートフィ ル(Auto Fill)モードというのがあります。このモードがオンの時に文章を 入力していって行を長くしすぎた場合、自動的に単語と単語の間で行が分割さ れます(日本語の場合はどの文字の間でも。禁則処理もなされます)。 Auto Fill モードは M-x auto-fill-mode とやればオンにできます。 それがオンの状態で M-x auto-fill-mode とやれがオフにできます。 このコマンドは、モードがオフならオンに、オンならオフにするのです。こう いうのを「モードをトグルする」と言います。 >> M-x auto-fill-mode とタイプして、 "asdf " で始まる行を入力 して下さい。行が分割されるまで何度も "asdf " とタイプしましょう。ス ペースを忘れずに。Auto Fill はスペースが入力された時のみ働きます。 右マージンは通常 70 文字(カラム)ですが、C-x f コマンドでこれを変更す ることができます。指定の文字数を数値引数として与えます。 >> 数値引数 20 で C-x f をやりましょう。 (C-u 2 0 C-x f)。 それから適当な文章(英語)を入力し、20 文字で行が分割されるのを見て みましょう。それから C-x f コマンドでまたマージンを 70 文字に戻して 下さい。 パラグラフの途中を変更しても Auto Fill モードはそれを自動的にフィルし 直しはしません。 パラグラフをフィルし直すにはカーソルをそのパラグラフの中に置いてから M-q をタイプします。 >> カーソルをこの行直前のパラグラフに移動させ M-q とタイプして下さい。 *検索 ====== 文章中の特定の文字列を、前向きにも後向きにも探す事ができます。文字列を 探すというのはカーソル移動コマンドです。つまり、次にその文字列が現れる 場所までカーソルを移動させるのです。 Emacs の検索コマンドは「インクリメンタル」です。検索する文字列をタイプ しているそばから検索が起るのです。 検索を始めるためのコマンドは、前向きに検索するならば C-s、後向きなら C-r です。まだです!!今はまだ試さないで下さい。 C-s を打つと "I-search" という文字列がエコーエリアに表示されるのが見え るでしょう。これは Emacs がインクリメンタル検索という状態にいて、あな たが探したい文字列を入力するのを待っているのです。 を打てば検 索を終われます。 >> さて C-s とタイプして検索を始めましょう。ゆっくりと1文字ずつ "cursor" という単語を入力します。1文字打つ毎にカーソルがどう動くか 見ましょう。 さあ、"cursor" が1回見つかりました。 >> もう一度 C-s と打って次の "cursor" を見つけましょう。 >> 今度は を4回打って、カーソルの動きを見て下さい。 >> と打って検索を終了しましょう。 何が起ったか分りますか?インクリメンタル検索では、あなたがそれまでに打っ た文字列が現れるところに行こうとします。次の "cursor" に行くにはもう一 度 C-s と打ちます。もしもうそういう文字列が無かったら、ベルをならして 検索が現在は失敗していることを知らせます。C-g を打てば検索を終われます。 注意して下さい。システムによっては C-s とタイプすると画面が動かなくな り Emacs が表示しようとするものが何も画面に出なくなります。これは、フ ローコントロールと呼ばれるOSの機能が C-s を捉え、Emacs に渡さないよ うにしているのです。これを解除するには C-q をタイプします。 インクリメンタル検索の途中で を打つと検索文字列中の1番最後 の文字が消えます。そして、カーソルは、前回の位置に戻ります。たとえば、 "c" とタイプして最初の "c" を探します。それから "u" を打つと最初の"cu" の場所にカーソルが動きます。そこで を打つと "u" を検索文字列 から消して、カースルは最初に "c" が現れた場所に戻ります。 C-s は、現在のカーソル位置以降に出てくる検索文字列を探し始めます。もし、 文章の前の方を探したかったら、C-r をタイプします。これまでの C-s につ いての説明はすべて C-r にも当てはまります。検索の方向が反対なだけです。 *複数のウィンドウ ================== Emacs の素敵な機能の一つとして、一つの画面に同時にいくつものウィンドウ を表示することができます。ここで言う「ウィンドウ」は他のアプリーケーショ ンで言うところの「ウィンドウ」とは別です。そちらの方は Emacs では、 「フレーム」と呼びます(次の節で説明します)。Emacs のマニュアルには用 語集がありますので、参考にしてください。 >> カーソルをこの行に持ってきて C-u 0 C-l とタイプして下さい(最後のは CONTROL-L ですよ、CONTROL-1 じゃありません)。 >> それから C-x 2 で画面を2つのウィンドウに分割しましょう。どちらのウィ ンドウもこのガイドを表示しています。カーソルは上のウィンドウ内です。 >> C-M-v とタイプし下のウィンドウをスクロールさせましょう。 (メタキーがない場合は ESC C-v とタイプします。) >> C-x o ("o" は "other(他方)" を意味します)をタイプし下のウィンド ウにカーソルを移して下さい。 >> 下のウィンドウで C-v や M-v を使ってスクロールさせましょう。 ここに書いてある指示は上のウィンドウで読み進んでください。 >> もう一度 C-x o とタイプし、カーソルを上のウィンドウに戻します。 カーソルは上のウィンドウの元あった位置に戻ります。 C-x o を使ってウィンドウ間を行ったり来たりできます。各ウィンドウはそれ 自身のカーソル位置を保持していますが、一度には一つのウィンドウだけがカー ソルを表示します。通常の編集コマンドは皆カーソルがあるウィンドウに対し て働きます。そのウィンドウを "selected window (選択中のウィンドウ)" と 呼びます。 C-M-v コマンドは、一つのウィンドウで文章を編集中に他のウィンドウを参照 している時に役立ちます。編集中の場所にカーソルを保ったまま、C-M-v で他 のウィンドウを読み進めて行くことができます。 C-M-v はコントロールメタ文字の一例です。メタキーがある場合は、コントロー ルキーとメタキーを押しながら v をタイプします。コントロールキーとメタ キーはどちらを先に押しても構いません。どちらもその後にタイプされる文字 に対する修飾キー (modifier key) として働くからです。 メタキーが無い場合、ESC キーを使いますが、この場合は順番が大事です。ま ずESC を押してから離して C-v を打ちます。C-ESC v では駄目です。これは ESC はそれ自体が一つの文字で修飾キーではないからです。 >> 上のウィンドウで C-x 1 とタイプし下のウィンドウを消しましょう (もし下のウィンドウで C-x 1 とタイプすると上のウィンドウが消えます。 このコマンドは「現在自分がいるウィンドウだけにしなさい」というものだと 思って下さい。) 両方のウィンドウに同じバッファを表示する必要はありません。一方のウィン ドウで C-x C-f でファイルを開いても他方のウィンドウは変化しません。各 ウィンドウにおいて別々のファイルを開くことができるのです。 >> C-x 4 C-f とタイプし続けて何か自分のファイル名を入力して下さい。 で入力を終わらせて下さい。今指定したファイルが下のウィンド ウに現れます。カーソルもそっちに移ります。 >> C-x o とタイプし上のウィンドウに戻って下さい。それから C-x 1 で下の ウィンドウを消しましょう。 *複数のフレーム ================ キャラクタ端末を使っているのでない限り、Emacs はいくつものフレームを作 ることができます。フレームとはいくつかのウィンドウのまとまりで、メ ニュー、スクロールバー、エコーエリアなども含みます(アプリケーショ ンによってはこれをウィンドウと呼びます)。 >> M-x make-frame とタイプして、新しいフレームが表示されるの を確認しましょう。 元のフレームでやっていたことはなんでもこの新しいフレームでもできます。 最初のフレームとその後に作られるフレームで違いはありません。 >> M-x delete-frame とタイプしてください。これで現在選択され ているフレームが消されます。 フレームは、通常のウィンドウマネージャの機能(良くあるのはフレーム上 端のタイトルバー上の X 印のクリック)で消すこともできます。フレームを 消しても現在の編集情報はなくなりません。単に見えなくなるだけで、後で また見えるようにできます。 *再帰編集レベル (RECURSIVE EDITING LEVELS) =========================================== 時々(不本意に)再帰編集レベルと呼ばれる状態に入ることがあります。モー ドラインのメジャーモード名を囲む丸括弧 "()" がさらに鉤括弧 "[]" で囲ま れます。例えば、(Fundamental) と表示される代わりに [(Fundamental)] の ようになります。 再帰編集レベルから抜け出すには ESC ESC ESC とタイプします。これは汎用 「抜け出し」コマンドです。余分なウィンドウを消したり、ミニバッファから 抜けたりするのにも使えます。 >> M-x とタイプしミニバッファに入って下さい。それから ESC ESC ESC とタ イプし抜け出してみましょう。 C-g では再帰編集レベルからは抜け出せません。これは、C-g が再帰編集レベ ル内でのコマンドや引数を取り消すのに使われているからです。 *更にヘルプを得るには ====================== この入門ガイドでは Emacs を使い始めるのに十分な情報を提供したつもりで す。Emacs にはあまりにも多くの機能があるので、ここですべてを説明するの は無理です。役に立つ機能をもっと多く学びたいと思う人のためには、Emacs のコマンドの説明を読むためのコマンドがあります。これらの「ヘルプ」コマ ンドは皆 Control-h 文字(ヘルプ文字と呼びます)で始まります。 ヘルプ機能を使うには、C-h に続いてどんな種類のヘルプが必要かを示す1文 字をタイプします。もしそれすら分らない場合は C-h ? とタイプしましょう。 どんな種類のヘルプを提供できるかが示されます。もし、C-h をタイプしてか ら気が変わったら、C-g をタイプして取り消すことができます。 (もし C-h が画面の下の方にヘルプのメッセージを出さなければ、F1 キーか M-x help を試してみて下さい。) 最も基本的なヘルプ機能は C-h c です。C-h、それから c、そしてコマンドの キー若しくはそのシーケンスをタイプすると、そのコマンドについての短い説 明を表示します。 >> C-h c C-p とタイプしてみましょう。 以下のようなメッセージが表示されるはずです。 C-p runs the command previous-line これは「ファンクションの名前」を表示したのです。ファンクション名はその コマンドが何をするものなのかが分るように付けられますので、簡単な説明と してもそのまま役に立ちます。一度学んだコマンドについて思い出すには十分 です。 C-x C-s や(メタキーやアルトキーがない場合の) v などの複数文字 のコマンドを C-h c の後にタイプすることもできます。 コマンドについてもっと多くの情報が欲しければ C-h c の代わりに C-h k を 使います。 >> C-h k C-p とタイプしてみましょう。 Emacsのウィンドウに、コマンドの名前と同時にその機能の説明が表示されま す。読み終えたら、C-x 1 とタイプしてヘルプの文章を消しましょう。必ずし もすぐにそうする必要はありません。ヘルプの文章を見ながら編集を続け、そ れから C-x 1 とタイプしても構いません。 C-h には他にも役に立つオプションがあります。 C-h f ファンクションの説明。ファンクション名を入力します。 >> C-h f previous-line とタイプしてみましょう。 C-p コマンドを実行するファンクションについてのすべての情報を表示し ます。 これに似たコマンド C-h v は変数の説明を表示します。変数には、その値を セットすることによって Emacs の振舞いをカスタマイズできるものもありま す。変数名の入力をプロンプトにしたがって入力します。 C-h a コマンドアプロポス (command apropos)。キーワードを入力 すると、そのキーワードを名前に含む全てのコマンドをリス トアップします。これらのコマンドは全て M-x で実行でき ます。コマンドによっては、それを走らせるための1文字か 2文字のシーケーンスも表示されます。 >> C-h a file とタイプしてみて下さい。 "file"という文字列を名前の一部に持つ全ての M-x コマンド(拡張コマンド) を別のウィンドウに表示します。 C-x C-f のような文字コマンドも対応する 名前(find-file のように)に並んで表示されます。 >> C-M-v とタイプしヘルプのウィンドウをスクロールさせましょう。何度か やって下さい。 >> C-x 1 でヘルプウィンドウを消して下さい。 C-h i 附属マニュアル(Info)を読む。このコマンドを使うと、あ なたは 「*info*」 という名の特殊なバッファに移されます。 そこで、システムにインストールされているパッケージのマ ニュアルが読めます。 m emacs とタイプすれば Emacs のマニュアルが読めます。もし Infoを使うのが初め てなら、? とタイプしましょう。Info モードのガイドツアー が始まります。この入門ガイドを読み終えた後は、Emacs の Info マニュアルをあなたの教本にして下さい。 *もっと多くの機能 ================== Emacs のマニュアルを読めば、それが印刷されたものであろうと、Emacs に附 属するもの(Help メニューを使うか C-h r とタイプ)であろうと、Emacs に ついてもっと多くを学べます。あなたが特にお気に召すであろう機能に、タイ プ数を減らしてくれる補完(completion)と、ファイルの扱いを単純化してく れるディレクトリ編集(dired) の2つのがあります。 補完(completion)は、不必用なタイプを省くためのものです。たとえば、も し *Message* バッファに切替えたければ、C-x b *M とタイプするだけ で、Emacs は残りのバッファ名を、既にタイプした部分から決定できる限り、 埋めてくれます。補完はコマンド名やファイル名の入力時にも効きます。これ については Emacs マニュアルの "Completion" というノードを見て下さい。 ディレクトリ編集(dired)は、ディレクトリやそのサブディレクトリ中のファ イルをリストアップし、リスト中を移動しながら、ファイルを開く、名前を変 更する、削除する、その他の操作を行う、などができます。これについては、 Emacs マニュアルの "Dired" というノードを見て下さい。 マニュアルは、Emacs のその他の多くの機能について説明しています。 *おわりに ========== Emacs を終了するには、C-x C-c です。 この入門ガイドは、まったくの初心者にもわかりやすいようにと意図していま す。ですから、もし何かわかりにくい点があったなら、自分を責めないで、私 達に文句をつけて下さい。 *この翻訳版についての謝辞 ========================== この文書は Emacs Ver.22 付属の英語版の入門ガイドを日本語に翻訳したもの です。その際、Emacs Ver. 20 附属の日本語版入門ガイドをベースにしました。 Emacs Ver. 20 附属の日本語版入門ガイドは、Mule 付属の日本語ガイドを参 考にしたもので、その元は SANETO Takanori 氏が日本語 MicroEmacs(kemacs) 入門編として翻訳され、それを鈴木裕信氏 が Nemacs/Mule 用に変更、さらに吉田茂樹氏が修正されたものです。これらの方々 に深く感謝します。 *著作権表示 ============ ここに元の英語版の著作権表示をそのまま付けます。この翻訳版もこれに従い ます。 This tutorial descends from a long line of Emacs tutorials starting with the one written by Stuart Cracraft for the original Emacs. This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions: Copyright (C) 1985, 1996, 1998, 2001-2023 Free Software Foundation, Inc. Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. The conditions for copying Emacs itself are more complex, but in the same spirit. Please read the file COPYING and then do give copies of GNU Emacs to your friends. Help stamp out software obstructionism ("ownership") by using, writing, and sharing free software! ;;; Local Variables: ;;; coding: iso-2022-jp ;;; End: