さらに 1 を入力して ( この時点での入力は、 sum1 です ) TAB を入力します。
C- s を 2 回押します。
C-s
は現在のカーソル位置からファイル終りに向かってインクリメンタル探索をする編 集コマンドです。一方C-r
は、現在のカーソル位置からファイル始めに向かって(C-s
とは逆方向に
)
インクリメンタル探索をする編集コマンド です。M-x search-formard, M-x search-backword
も探索をする編集コマンドですが 、探索文字列 を一括して与えて探索する編集コマンド です。これを実行するには、エコー領域で探索文 字列を一度に与えないといけません。Search:
ここで探索文字列を入力し 、 最後に
RET
を押します。Search: define
RET
すると探索が行なわれ 、見つかればその場所にカーソルが移動します。もし見つからな ければエラーとなり、 エコー領域に
Search failed: "define"
と表示されます。
重要
:
探索や置換を途中で中断するには、C-g
を入力します。置換とは、バッファ内のある文字列を他の文字列に置き換える編集コマンドです。文字列 の置換をするには
M-%
を使います。例として、バッファ中の Eeyore という語を Rabbit に置き換える方法を示します。M-%
を押すと、 エコー領域は Query replace:となります。ここで置き換えようとする文字列Eeyoreを入力し 、
RET
を押します。するとエコー領域は
Query replace: Eeyore with:
となります。ここで置き換える文字列Rabbitを入力して
RET
を押します。これにより 置換が始まります。置き換えるべき候補の文字列にカーソルが移動し 、候補を置き換えるかど うかが尋ねら れます。
Query replaceing Eeyore with Rabbit:
ここでの入力は以下の通りです。
SPC
その候補を置き換え、さらに次の候補を探します。
DEL
その候補は置き換えず、さらに次の候補を探します。
!
それ以降、置き換えをするかを尋ねずに、候補をすべて置換えします。
ESC
置換命令を終了します。
Mule
エディタの場合は以下の通りです。y
で置き換えをします。n
で置き換えをしません。!
はNGSCM
の場合と同じで、q
で置換命令を終了します。MR Buffer Size File
-- --- ----
----*help* 3571
*Buffer List* 0
.* *scheme* 529
% qwe.scm 143 /tmp_mnt/condor/home1/kakugawa/qwe.scm
*scratch* 0
---NGSCM: *Buffer List*
(-EE:fundamental)---図
7.4:
バッファの一覧7.1.8 マルチバッファ
前にも説明したように、ファイルはいったんバッファに入れられて編集されます。複数 のバッファを使って、複数のファイルを同時に編集してゆくことができます。
バッファの一覧を見るには、次の編集コマンド を使います。
C-x C-b
新たに *Buffer List* という名前のバッファを作り、現在のバッファの一覧を表示
します。
図
7.4
に例を示します。この図での各行は、左から次の意味を持ちます。.のついている バッファが現在選択されている(
カーソルのある)
バッファです。* の付いているものは変更が加えられたことを示しています。% の付いているバッファは書き込み禁止のバッファ
です。
(C-x C-r
でファイルを読み込んだときなどに、このようなバッファが作られます。)
それらのつぎの欄はバッファ名で、その右がそのバッファの大きさを表しています。一番 右の欄はバッファに対応したファイル名を表しています。
バッファの選択と作成には、次の編集コマンドがあります。
C-x b
他のバッファを選択します。
C-x b
を実行すると、 エコー領域でSwitch to buffer: (default
buer
)と、切替えるバッファ名が尋ねられます。括弧で囲まれているバッファ名は、バッファ名 を指定せずに
RET
だけを入力したときに切替えられるバッファ名です。もし選択したい バッファがbuer
なら、RET
を押すだけでそのバッファに切替わります。それ以外のバッファを選択する場合は、バッファ名を入力して最後に
RET
を押します。するとそのバッファに切替り、表示されます。もし指定したバッファがない場合は、その 名前のバッファが新しく作成されます。
たとえば
Switch to buffer: (default *scratch*) f.scm
RET
とすれば 、f.scm バッファが選択されます。
バッファ名の指定には補完機能が使えるので、バッファ名を完全に覚えておいたり、バッ ファ名をすべて入力しなくて済みます。
このほかバッファに対する編集コマンド には、次のものがあります。
C-x k
バッファを削除します。
C-x C-q
選択されているバッファの変更禁止
/
変更可能を、交互に切替えます。C-x k
を実行すると、 エコー領域でKill buffer: (default
buer
)と表示されます。もし削除したいバッファが
buer
なら 、単にRET
を入力することでbuer
が削除されます。それ以外のバッファを削除するのなら、そのバッファ名を入力し て最後にRET
を押します。(
この編集コマンド でも、 バッファ名の指定に補間機能が使 えます。)
たとえば
Kill buffer: (default *scheme*) f.scm
RET
とすれば 、f.scmが削除されます。もしバッファに変更
(
書き込み)
が加えられた後にセーブがされていなければ 、本当にバッファを削除して良いかど うかをエコー領域で尋ねられ ます
:
Buffer modifed; kill anyway? (yes or no)
これはファイルに修正を加えたけれども、うっかりセーブを忘れてバッファを削除して しまうのを防止するためのものです。というのも、セーブしなければバッファの書き換え はファイルに反映されないからです。ですがバッファが削除されても、ディスク上のファイ ル自体は残ります。もちろんそのファイルの内容は、編集作業を始める前のものです。も し編集操作を誤ってど うしようもなくなったときは、セーブせずにバッファを削除するこ とで、編集前のファイルのままにできます。
C-x C-q
を実行すると、 バッファのモード 行の左の部分--**-NGSCM が --%%-NGSCM に なります。もう一度C-x C-q
を実行すると元通りになります。表示が --%%-NGSCM になっ ているときはバッファは変更禁止になっていて、文字の削除や追加などはできません。選択するバッファを切替えることで、 複数のファイルを同時に編集できます。ヤンク機 能と組み合わせれば 、あるファイルの一部を他のファイルに移動させることができ、編集 作業が大変楽になります。
7.1.9 マルチウインド ウ
画面をいくつかに分割し 、複数のバッファを同時に表示する機能をマルチウインド ウ
(multiple windows)
といいます。たとえば図4.3
では 、画面を2
分割して2
つのバッファqwe.scm と *scheme* を表示しています。このような表示窓をウインド ウ
(window)
と呼んでいます。ウインド ウは
2
つだけでなく、いくつも作ることができます。カーソルのあるウインド ウが選択されたウインド ウです。また、選択されたウインド ウ に対応しているバッファが 、選択されているバッファとなります。編集作業は選択された バッファに対して適用されます。
ウインド ウにはひとつのバッファが対応していて、対応するバッファがそのウインド ウ に表示されます。
(
表示されていないバッファには、どのウインド ウも対応していないこと になります。)
ひとつのバッファを複数のウインド ウに対応付けることもできます。この 場合では、ひとつのバッファが複数のウインド ウで表示されることになります。各ウイン ド ウはそれぞれのカーソル位置を記憶しています。このため同一のバッファでもウインドウが違えば 、違う部分を表示することが可能となります。
ウインド ウの作成と消去に関する編集コマンド には、次のものがあります。
C-x 2
選択しているウインド ウを
2
つに分割します。
C-x 0
選択しているウインド ウを消去します。
C-x 1
選択しているウインド ウだけを残し 、他のウインド ウを消去します。
図
7.5
は、ひとつのウインド ウだけの画面を示しています。ここでC-x 2
を実行すると、図
7.6
のようにウインド ウが2
分割されます。この図から分かるように、分割されたウイン ド ウはそれぞれ同じバッファに対応しています。ここでファイルを選択したり、他のバッファの選択をすることで、他のファイルや他のバッファが表示されます。こうすることで、
別のファイルを参照しながらプログラムの編集をすることができます。たとえば図
7.6
の状態でファイル fact.scm を選択した場合を、図
7.7
に示します。その他のウインド ウ関連の編集コマンド には、次のものがあります。
(define (sum n) (if (= n 1)
1(+ (sum (- n 1)) n)))
---NGSCM: sum.scm
(-EE:fundamental-Scheme)---図
7.5:
ウインド ウが1
つの状態
C-x o
他のウインド ウを選択します。
C-x^
選択されたウインド ウを大きくします。