第5回 Emacs入門 *** 1 Emacsとは *** UNIX で良く使われるエディッタとして vi の他に Emac s というエディタがある。Emacs 系のエディタはたくさん あるが、その中でもっとも多く使われているのがRichard M. Stallman が作った GNU Emacs であり、この GNU Emac s で日本語が扱えるようにしたのが Nemacs である。Emac s は vi と違って、標準ではインストールされていない。 しかし、Emacs は非常に高機能なため、多くのマシンにイ ンストールされている。オンラインドキュメントも豊富で ある。 Emacs を使えば、編集作業だけではなく、電子メール・ ニュースの読み書きも行なうことができる。さらに、Nema cs を使えば、日本語の文章の編集も行なえる。 なお、特に断りのない限り GNU Emacs, Nemacs のことを どちらも Emacs と呼ぶことにする。 *** 2 Emacsの起動 *** コマンドラインから % emacs とすれば、Emacsが立ち上がる。Nemacs の場合は、 % nemacs となっているかもしれない。もし、 emacs: Command not found. などのように、コマンドが見つからない場合は path がち ゃんとセットされていないか、もしくはインストールされ ていないということが考えられる。詳しくは、あなたのシ ステムの管理者に聞いて欲しい。 = ===============図 1 はじめ====================== Nemacsを立ちあげた直後の画面 = =================================================== GNU Emacs 18.55.2 of Fri Aug 7 1992 on chobi (berkeley-unix) Copyright (C) 1988 Free Software Foundation, Inc. Type DEL for help; C-x u to undo changes. (`C-' means use CTRL key.) GNU Emacs comes with ABSOLUTELY NO WARRANTY; type DEL C-w for full details. You may give out copies of Emacs; type DEL C-c to see the conditions. Type DEL C-d for information on getting the latest version. Type DEL t for a tutorial on using Emacs. Nemacs version 3.3.2 of 1990.6.6 Type DEL T for a Japanese tutorial on using Nemacs. For any other Nemacs specific information, please read /usr/local/nemacs/etc/NEMACS.???. [----]-----NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 1 おわり====================== Nemacs が立ち上がると図1のようなメッセージが表示さ れる。このメッセージはキーを入力するか、しばらくする と消えてしまう。このメッセージに書かれているように D EL t と入力すると、英語版のチュートリアルが、DEL T と 入力すると日本語版のチュートリアルを実行することがで きる。(当然のことながら、日本語版のチュートリアルはN emacsにしかない) チュートリアルでは画面を読みながら Emacsの使い方を学ぶことができる。一度は実行してみるこ とをお奨めする。 画面の下の [----]-----NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- はモード行といわれ、Emacsの現在の状態を表している。 = ===============図 2 はじめ====================== モード行 = =================================================== [----]-----NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- | | | | | | | | | バッファの | | | | 表示されている場所 | | | バッファのモード | | 漢字コード | バッファの名前 egg(カナ漢字変換)用 = ===============図 2 おわり====================== モード行は図2のようになっている。egg用の部分につい ては後の漢字入力の方法で述べる。この [----]の部分と NEmacs の間の ----- の部分は、そのバッファに修正が加 えられてか、とか書き込み禁止などといった状態を表して いる。 ----- 未修正 --**- 修正が加えられた --%%- 書き込み不可能 バッファの名前は普通、編集しているファイル名と同じ である。その場合、バッファの内容は作られた時は、その ファイルの内容を読み込んだものである。ただし、*scrat ch* といったファイルと関係なく作られるバッファもある。 漢字コードは次の 4つの漢字種類の漢字コードを表して いる。漢字コードは左から順に ファイル入出力に用いられるコード キーボード入力のコード 端末表示に用いるコード プロセスとの通信に用いているコード を表している。それぞれは - 未設定 N 無変換 J JIS S SJIS E EUC(UJIS) を表している。 Emacs ではいろいろなモードを持っており、それぞれの モードでいろいろ便利な機能が用意されている。同じ入力 をしてもモードによって違う動作をするので、このバッフ ァがどのモードで動いているのかがモード行に表示される のである。 バッファの表示されている場所は普通は百分率(%)で表 される。また、 All バッファ全てが見えている Top バッファの先頭 Bot バッファの最後 などのようにも表示される。 % emacs filename とすることで、編集するファイル filename を立ち上げ 時に指定することができる。このときは上のようなメッセ ージは出ずにそのファイルの内容が表示される。 *** 3 キーの説明 *** Emacsではviとは違って、基本的に押したキーがものがそ のまま入力される。a キーを押せば現在カーソルがある位 置に 'a' という文字が挿入される。わざわざ入力モードな どにする必要ない。 そのかわり、編集用のコマンドなどはほとんど C-b や M-c といった、CTRLやMetaなどを使った入力で行なう。 C-b というのは、Control(CTRL)キーを押しながら、b キ ーを押すことを表す。M-c というのは、Metaキーを押しな がら、c キーを押すことを表す。Metaキーがないマシンで は ESCキーを押してから(押しながらではない)、c を入力 する。ESCのかわりに C-[ でもよい。このときは大文字、 小文字が区別される。RET は Return キーでこれは、C-m と同じである。DELは Deleteキーである。SPC はスペース のことを表している。TABはTabキーのことを表す。Tabキー のかわりに C-i でもよい。LFDは LineFeedキーのことを表 す。LineFeedキーのかわりに C-j でも同じである。 = ===============図 3 はじめ====================== キー = =================================================== C- Controlキーを押しながらキーを押す。 M- Metaキーを押しながらキーを押す。または、ESCキーを押してから キーを押す。 ESC ESCキー、C-[ も同じ RET Returnキー, C-m も同じ DEL Deleteキー SPC スペースキー TAB Tabキー、C-i も同じ LFD LineFeedキー, C-j も同じ = ===============図 3 おわり====================== *** 4 Emacsの終了 *** C-x C-c と入力すれば、つまり、Controlキーを押しな がら、x を入力し、そのあと Controlキーを押しながら c を入力すれば、Emacsを終了することができる。その時、 画面の一番下のエコー領域で save file ファイル名? などと聞かれたら、yes と答えていけばとりあえず終了す ることができる。もし、その内容をファイルに保存する必 要がなければ no と答える。 また、Emacs を使っていて、良く分からない状況に陥っ たらいつでも、C-g を押せばよい。 *** 5 Emacsでのエディット *** Emacs では画面をいくつかの領域に分けている。一番広 い領域がテキストを編集する領域である。その領域はたく さんのウインドウに分割することができる。それぞれのウ インドウにはいろいろなバッファの内容が表示される。も ちろん、違うウインドウに同じバッファの内容を表示する こともできる。カーソルのあるウインドウで編集が行なわ れる。 ファイル名を指定せずにEmacsを立ち上げた場合には *s cratch* というバッファで編集が行なわれる。ファイル名 をしてした時はそのファイルの編集になる。存在しないフ ァイル名を指定した時は、新しいファイルを編集すること になる。 それでは何か入力してみよう。 Emacsでは普通打ち込んだ文字がそのまま入力できる。例 えば、 Emacs makes all computers slow. を入力したければ、これをそのまま打ち込めば良い。改行 するためにはRETを入力する。 = ===============図 4 はじめ====================== 入力した例 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. Emacs makes all computers slow. Emacs makes all computers slow.■ [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 4 おわり====================== これを何回か入力すると図4のようになる。 Emacsでは、カーソルのある位置をポイントといい編集コ マンドが実行される位置を表す。複数のファイルを編集し ている時も、ファイルそれぞれのポイントの位置が記憶し ている。文字はポイントの位置に挿入されていく。ポイン トを移動するのにもコマンドを実行することで行なう。例 えば、C-b とすると、ポイントが一文字分戻る。逆に一文 字分進めるためには C-f とする。一行上に移動するのは C-p、下に移動するのは C-n である。例えば、上の状態で 2回 C-b とすると、ポイントは w に移動する。3回 C-p と すると、一番上の行の w にポイントが移動する。さらに 3回 C-f とすると、次の行の先頭の E に移動する。行の最 後で C-f とすると、次の行の先頭に移動する。逆に行の先 頭で C-b とすると前の行の最後の文字(改行文字)に移動す る。ポイントが 2行目の E の位置にある時に C-n とする と、次の行の E にポイントが移動する。 = ===============図 5 はじめ====================== C-b を2回: ポイントが w の上にある。 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. Emacs makes all computers slow. Emacs makes all computers slo■ ←← [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この w の上 | Emacs makes all computers slow. = ===============図 5 おわり====================== = ===============図 6 はじめ====================== C-p を3回: ポイントが一番上の行の w の上にある。 = =================================================== Emacs makes all computers slo■↑ Emacs makes all computers slow.↑ Emacs makes all computers slow.↑ Emacs makes all computers slow.↑ [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この w の上 | Emacs makes all computers slow. = ===============図 6 おわり====================== = ===============図 7 はじめ====================== C-f を3回: ポイントが2行目の E の上にある。 = =================================================== →→ Emacs makes all computers slow. →■acs makes all computers slow. Emacs makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この E の上 | Emacs makes all computers slow. = ===============図 7 おわり====================== = ===============図 8 はじめ====================== C-f を3回: ポイントが2行目の E の上にある。 = =================================================== Emacs makes all computers slow. ↓Emacs makes all computers slow. ↓■acs makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この E の上 | Emacs makes all computers slow. = ===============図 8 おわり====================== = ===============図 9 はじめ====================== ポイント移動のまとめ = =================================================== C-p(previous-line) ↑ C-b(backward-char) ← ポイント →C-f(forward-char) ↓ C-n(next-line) = ===============図 9 おわり====================== C-f,C-b のかわりに M-f,M-b にすると、文字単位ではな くて語単位で移動ができる。また、C-v とすると、約一画 面分スクロールアップし、M-v とすると逆に一画面分スク ロールダウンする。ポイントが移動によって画面から出る 時もスクロールし、ポイントのある行が画面内にあるよう にする。 次の移動コマンドも良く使う。 = ===============図 10 はじめ====================== その他の移動コマンド = =================================================== C-a 行頭に移動(beginnig-of-line) C-e 行末に移動(end-of-line) M-< バッファの先頭に移動(beginning-of-buffer) M-> バッファの最後に移動(end-of-buffer) = ===============図 10 おわり====================== 文字の削除 文字を削除するのは DELをつかう。DELキーでポイントの 一つ前の文字が消される。BSキーではないことに注意。BS キーでは C-h が入力されるが、これはEmacs の help-com mand として使われている。DELの他に C-d でも文字を消す ことができる。DEL はポイントの前の文字を消すのに対し、 C-d はポイント上の文字を消去する。例えば、Emacs を消 して X-window systemにする時は 5回 C-d 入力して、X-w indow system と入力すれば良い。 = ===============図 11 はじめ====================== C-d を5回: Emacsを削除 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. ■akes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは このスペースの上 | makes all computers slow. = ===============図 11 おわり====================== また、このように単語を消す時には何回も C-d するかわ りに、M -d とすればよい。これならば、一回で単語を削 除することができる。 = ===============図 12 はじめ====================== X-window system を入力 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system■akes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは このスペースの上 | X-window system makes all computers slow. = ===============図 12 おわり====================== = ===============図 13 はじめ====================== 文字削除 = =================================================== C-d (delete-char) ポイント上の文字を削除 DEL (backward-delete-char) ポイントの前の文字を削除 = ===============図 13 おわり====================== 取消 まちがえて消してしまった場合は C-x u とすればよい。 C-x を入力した後 u を入力すればよい。これを入力する とさっき行なった変更をとり消すことができる。 C-x u のかわりに C-_ でもよい。 = ===============図 14 はじめ====================== アンドゥ = =================================================== C-x u (undo) C-_ (undo) = ===============図 14 おわり====================== 行削除 文字を削除する他の方法としては C-k がある。これは、 ポイントから行末の削除を行なう。ポイントが行末の時は その改行文字が削除される。C-k によって削除された領域 は実は保存されている。C-y を入力すると、最後に C-k に よって実行した領域がポイントのある位置に挿入される。 この保存される領域は C-k を連続して実行した時はまとめ られている。この C-k, C-y を使えば領域の移動ができる。 元の領域を C-k で削除し、ポイントを C-p, C-n, C-f, C -b などで移動し、移動先で C-y を入力すれば良い。 = ===============図 15 はじめ====================== C-a を入力しポイントを行頭に移動させてから、C-k を入 力: X-window system makes all computers slow. が削除される。 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. ■ Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 15 おわり====================== = ===============図 16 はじめ====================== もう一度 C-k を入力: 改行文字が削除される。 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. ■acs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この E の上 | Emacs makes all computers slow. = ===============図 16 おわり====================== = ===============図 17 はじめ====================== さらにもう一度 C-k を入力: Emacs makes all computers slow.が削除される。ここまでで、 X-window system makes all computers slow. Emacs makes all computers slow. が記憶されている = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. ■ [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 17 おわり====================== = ===============図 18 はじめ====================== C-p を 2回入力してポイントを移動させる。 = =================================================== ↑■acs makes all computers slow. ↑Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この E の上 | Emacs makes all computers slow. = ===============図 18 おわり====================== = ===============図 19 はじめ====================== C-y を 入力。ポイントの位置に さっき削除した X-window system makes all computers slow. Emacs makes all computers slow. が挿入される。 = =================================================== X-window system makes all computers slow. Emacs makes all computers slow.■acs makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この E の上 | Emacs makes all computers slow.Emacs makes all computers slow. = ===============図 19 おわり====================== = ===============図 20 はじめ====================== 削除/復帰 = =================================================== 行削除 C-k (kill-line) 行の残りを削除 削除したものを復活 C-y (yank) C-k などで削除したものをポイントの位置に 復活させる。 = ===============図 20 おわり====================== 移動・複写 領域の移動、複写は C-k, C-y でも行なうことが可能だ が、普通は次のように行なう。まず、C-@ (または C-SPC) で現在のポイント位置にマークをセットする。マークをセ ットしても目に見えるわけではないが、Emacsはその場所を 記憶している。マークがセットされれば、一番下のエコー 領域に Mark set と表示される。 = ===============図 21 はじめ====================== C-@ を入力してマークをセットしたところ = =================================================== X-window system makes all computers slow. Emacs makes all computers slow.■acs makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Mark set # 注: カーソルは この E の上 | Emacs makes all computers slow.Emacs makes all computers slow. = ===============図 21 おわり====================== ここで、ポイントを移動させていく。マークとポイントの 間がリージョンとよばれる。ここで C-w を入力すると、リ ージョンが削除される。そして、ポイントを移動先に移動 させて、C-y を入力すると C-w で削除された領域がポイン トのある場所に挿入される。複写を行ないたい場合には C -w のかわりにM-w を入力する。M-w のときは、リージョン は記憶されるが削除は行なわない。 = ===============図 22 はじめ====================== C-n を2回入力してポイントを移動させる。 (J~~~(B で示さ れているところがリージョン(画面にはでません) = =================================================== X-window system makes all computers slow. Emacs makes all computers slow.Emacs makes all computers slow. Emacs makes all computers slow.(J~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(B ■(J~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(B [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 22 おわり====================== = ===============図 23 はじめ====================== C-w を入力。さっきのリージョンが削除される。 = =================================================== X-window system makes all computers slow. Emacs makes all computers slow.■ [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 23 おわり====================== = ===============図 24 はじめ====================== M-< を入力し、ポイントをバッファの先頭に持っていっ て、C-y を入力。削除したリージョンが挿入される。 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. ■window system makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この X の上 | X-window system makes all computers slow. = ===============図 24 おわり====================== = ===============図 25 はじめ====================== リージョン = =================================================== C-@ (set-mark-command) マークをセットする。 マークとポインタとで囲まれた領域がリージョン となる。 C-w (kill-region) リージョンを削除 M-w (copy-region-as-kill)リージョンを保存 = ===============図 25 おわり====================== ファイルの読み込み Emacsを立ち上げる時ファイル名を指定しておくといきな りそのファイルの編集を始めることができる。しかし、フ ァイル名を指定しておかないと *scratch* というバッファ で編集することになる。立ち上げた後で、あるファイルを 読み込んで編集したい時は C-x C-f とする。 = ===============図 26 はじめ====================== C-x C-f を入力 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Find file: (J~(B/■ = ===============図 26 おわり====================== ホームディレクトリで立ち上げた場合はこのようにファイ ル名の入力が促される。ファイル名を指定するとそのファ イルが新しいバッファに読み込まれ、そのバッファが表示 される。指定したファイルが存在しない時は新規ファイル としてオープンされる。例えば、ファイル memo を読み込 む場合は memo RET と入力すれば良い。ファイル memoが存 在しない時は新規ファイルとして扱われる。 = ===============図 27 はじめ====================== memoと入力 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Find file: (J~(B/memo■ = ===============図 27 おわり====================== = ===============図 28 はじめ====================== RET を入力し、memo を読み込む。このように (New file) と表示された場合は新規ファイルである。 = =================================================== [----]-----NEmacs: memo (-JJ-:Fundamental)--All----------- (New file) = ===============図 28 おわり====================== なお、ファイル名を入力する途中で SPC を入力すると、 = ===============図 29 はじめ====================== SPC を入力 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Making completion list... = ===============図 29 おわり====================== とエコー領域に表示されて、ウインドウが分割され、今ま で指定していた文字列で始まるファイル名のリストが表示 される。その文字列で始まるファイル名が一つしかない時 はそのファイル名がエコー領域に示される。それを読み込 む場合はそこで、RETを入力すれば良い。これはコンプリー ションといい、Emacs では様々な状況でこのコンプリーシ ョンを利用することができる。 = ===============図 30 はじめ====================== コンプリーションの結果 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Possible completions are: ../ ./ .cshrc .emacs .history .login .logout [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- File file: (J~(B/■ = ===============図 30 おわり====================== = ===============図 31 はじめ====================== ファイルの読み込み = =================================================== C-x C-f (find-file) ファイルを読み込む。 = ===============図 31 おわり====================== ファイルに保存 Emacs ではファイルをバッファに読み込んで編集を行な うが、編集を行なった結果はそのままではファイルの内容 に反映されない。編集した結果をファイルに保存させる必 要がある。 ファイルに保存する時は C-x C-s とする。もし、そのバッ ファがファイルを読み込んでできたバッファの時はそのフ ァイルに書き出される。そのバッファがファイルを読み込 んでできたバッファでない時(例えば *scratch* バッファ など)は C-x C-s とすると、 = ===============図 32 はじめ====================== C-x C-s と入力 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- File to save in: (J~(B/■ = ===============図 32 おわり====================== のように、ファイル名を聞いてくる。ファイル名を入力し て RET を入力すると = ===============図 33 はじめ====================== (J~(B/foo に書き込んだ場合。 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]-----NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Wrote /usr/komichi/foo = ===============図 33 おわり====================== のようにエコー領域に 書き込んだというメッセージが表示 される。ファイルに書き込むとそのバッファは未修正状態 になる。それは、モード行の--**-- が ----- になったこ とでわかる。なお、修正されていないバッファをファイル に保存しようとすると、 = ===============図 34 はじめ====================== 修正していないバッファを C-x C-s でファイルに保存しよ うとした時。 = =================================================== Emacs makes all computers slow. Emacs makes all computers slow. X-window system makes all computers slow. Emacs makes all computers slow. [----]-----NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- (No changes need to be saved) = ===============図 34 おわり====================== のように、エコー領域にメッセージが出力されファイルに は書き込まれません。 = ===============図 35 はじめ====================== ファイルに保存 = =================================================== C-x C-s (save-buffer) バッファの内容をファイルに書き込む。 = ===============図 35 おわり====================== *** 6 漢字入力の方法(egg) *** 日本語GNU Emacs(略してNemacs)では、egg(たまご:たく さん またせて ごめんなさいの略)という日本語環境がある。 これをつかって日本語の入力、文書処理を行なうことがで きる。 注意: eggを使って漢字を入力する場合には ネットワーク かな漢字変換サーバ jserver が必要である。 eggを使って日本語を入力は、ローマ字かな漢字変換によ って行なう。ローマ字かな漢字モードに写るためには C-(J\(B を入力する。 = ===============図 36 はじめ====================== C-(J\(B を入力してローマ字かな漢字変換モードに移行 = =================================================== ■ [ aあ]-----NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 36 おわり====================== = ===============図 37 はじめ====================== 漢字コードの切り替え = =================================================== N (無変換) --> S(SJIS) --> J(JIS) --> E(EUC) |___________________| = ===============図 37 おわり====================== このとき [ aあ]の部分がおかしい時は端末出力用のコー ドが正しく設定されていない。そのような場合は C-x C-k d を入力することにより、コードが 図 37 のように変わっ ていく。 正しく [ aあ] と表示されるまで、C-x C-k d を繰り返 す。もし、どれにしても [ aあ] とならない場合はその端 末が漢字を表示できないということが考えられる。 逆にローマ字かな漢字モードから普通のモードに戻るた めには、おなじく C-(J\(B を入力する。するとモード行の [ aあ] の部分がもとの [----] に戻る。 例として次の文章を入力してみよう。 京都の夏は暑い。 ローマ字かな漢字変換モードにしてからローマ字で kyotononatuhaatui. と入力する。大文字ではローマ字かな変換されないので必 ず小文字で入力する。 = ===============図 38 はじめ====================== kyotononat まで入力したところ。 = =================================================== |きょうとのなt■| [ aあ]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 38 おわり====================== = ===============図 39 はじめ====================== kyotononatuhaatui. と入力したところ。 = =================================================== |きょうとのなつはあつい。■ [ aあ]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この | の上 | |きょうとのなつはあつい。| = ===============図 39 おわり====================== このようにローマ字かな漢字変換時は | |で囲まれている のでフェンスモードという。フェンスモードでも次の編集 コマンドが利用できる。 = ===============図 40 はじめ====================== フェンスモード時のコマンド = =================================================== C-a フェンスの最初にポイントを移動する。 C-e フェンスの最後にポイントを移動する。 C-f ポイントを一文字分進める。 C-b ポイントを一文字分戻す。 C-g フェンス内の入力をキャンセルする。 DEL 一文字削除 C-k ポイント以降のフェンス内の文字を削除 = ===============図 40 おわり====================== ここで、SPC (または C-@)を入力するとかな漢字変換が行 なわれる。最初にかな漢字変換を行なう時は次のように j server との接続が行なわれる。 = ===============図 41 はじめ====================== SPC を押してかな漢字変換を行なったところ。 = =================================================== |きょうとのなつはあつい。■ [ aあ]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- ホスト jserver の WNN を起動しました。 # 注: カーソルは この | の上 | |きょうとのなつはあつい。| = ===============図 41 おわり====================== = ===============図 42 はじめ====================== かな漢字変換が実行されたところ。 = =================================================== |■日との 夏は 厚い。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- Loading /usr/local/emacs/lisp/eggrc-v4...done --------------------------------------------------- # 注: カーソルは この 今 の上 ↓ |今日との 夏は 厚い。| = ===============図 42 おわり====================== かな漢字変換の時は [ aあ] のところが、[漢字]にかわる。 もし、正しくかな漢字変換が行なわれたら、RET で確定 することができる。漢字変換がおかしい場合には、変換の 間違っている文節に移動し別の候補を表示させる。文節の 移動は C-f, C-b で行なうことができる。C-f で次の文節 へ進み、C-b で前の文節にもどる。目的の文節に移動した ら、C-p, C-n で 次の候補、前の候補に変更することがで きる。ローマ字入力が間違っていた時は C-c を入力すれば 良い。漢字モードから、ローマ字入力モードにもどる。 例えば、上の例では「京都の」が「今日との」になって いるので、修正する必要がある。 = ===============図 43 はじめ====================== C-p で次の候補を出す。 = =================================================== |■都の 夏は 厚い。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この 京 の上 ↓ |京都の 夏は 厚い。| = ===============図 43 おわり====================== = ===============図 44 はじめ====================== C-f を 2回入力し文節「厚い」に移動したところ。 = =================================================== |京都の 夏は ■い。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この 厚 の上 ↓ |京都の 夏は 厚い。| = ===============図 44 おわり====================== = ===============図 45 はじめ====================== C-n を 入力し次の候補「暑い」にする。 = =================================================== |京都の 夏は ■い。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この 暑い の上 ↓ |京都の 夏は 暑い。| = ===============図 45 おわり====================== = ===============図 46 はじめ====================== RET を入力して確定 = =================================================== 京都の夏は暑い。■ [ aあ]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- = ===============図 46 おわり====================== 文節の区切りがおかしい時は C-i、C-o を使って文節の伸 び縮みを行なうことができる。例えば 長芋のたんざくが食いたい。 を入力しようとして、 |長い もの 端 座 苦学 痛い。| のように文節が切られたときは、次のようにして変換する。 = ===============図 47 はじめ====================== C-i を入力し、文節「長い」を「長」にする。 = =================================================== |■ い 物 端 座 苦学 痛い。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この 長 の上 ↓ |長 い 物 端 座 苦学 痛い。| = ===============図 47 おわり====================== = ===============図 48 はじめ====================== C-f を入力し、文節「い」に移動し、C-o を使って文節を 伸ばし、「いもの」にする。「いもの」が「芋の」に変換 される。 = =================================================== |長 ■の 端 座 苦学 痛い。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この 芋 の上 ↓ |長 芋の 端 座 苦学 痛い。| = ===============図 48 おわり====================== = ===============図 49 はじめ====================== C-f を入力し、文節「端」に移動し、C-o を使って文節を 伸ばし、「たんざくが」にする。これは「タンザクが」に なる。 = =================================================== |長 芋の ■ンザクが 食いたい。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この タ の上 ↓ |長 芋の タンザクが 食いたい。| = ===============図 49 おわり====================== このように、C-f, C-b で文節を移動し、C-i, C-o で文節 の伸び縮みを行なって、C-p, C-n で漢字の候補を選択する。 文節を全部ひらがなにするためには C-p, C-n で候補を出 していく以外にM-h を使うことができる。また、カタカナ にするためには同じように M-k を使うことができる。 = ===============図 50 はじめ====================== M-h を入力し、文節「タンザクが」を「たんざくが」にす る。 = =================================================== |長 芋の ■んざくが 食いたい。| [漢字]--**-NEmacs: *scratch* (-JJ-:Lisp Interaction)--All---- # 注: カーソルは この た の上 ↓ |長 芋の たんざくが 食いたい。| = ===============図 50 おわり====================== これで、RETを押せば、確定する。 変換する漢字の候補が多い時は C-p, C-n で探すのは大 変なので、そのような時は M-s を使えば良い。また、何度 も誤変換をするようならば、単語登録を行なえば良い。単 語登録するためにはまず一度漢字変換する。その単語の最 初の文字にポイントを移動させ、そこでポイントをマーク する。次にその単語の最後の文字の後ろにポイントを移動 させ単語をリージョンにする。そこで、M-x を入力したあ と toroku-region と入力すると単語登録が始まる。そこで、 読みをローマ字で入力し、品詞、辞書名を数字もしくは C -f, C-b と RET で選択すればその単語がその読みで登録さ れる。 *** 7 Emacsのヘルプ機能 *** Emacsには以下にあげるような豊富なヘルプ機能が用意さ れている。 C-h a 文字列 RET 指定した文字列がコマンド名に含まれているコマンドを表示 する。 C-h b 現在のキーの割当を表示する。 C-h c キー キーが実行するコマンドを表示する。 C-h i Info というドキュメントを読むプログラムを実行する。 Info に入った後 h を入力すると Info の使い方について の説明を表示する。 C-h k キー キーが実行するコマンドとそのドキュメントを表示する。 C-h l 入力した最後の 100文字を表示する。 C-h m 現在のモードについてのドキュメントを表示する。 C-h t Emacsのチュートリアルを表示する。 C-h T Nemacsの日本語チュートリアルを表示する。 C-h w コマンド RET 指定したコマンドを実行するキーを表示する。