15.4.2.4 検索

例えば,ファイル内に含まれているある文字列を,全て編集したいような場合があるとします. 先ほどから書いている程度の分量であれば特に問題はありませんが,もっと長い文章が沢山書かれているファイルにおいて,編集したい部分を目で探すのは大変です. そこで Emacs の文字列の検索を行う便利な機能を利用しましょう.

検索方法にも実は色々ありますが,ここでは一単語ごと順々に検索するものをご紹介します. 練習のためにここでは以下のテキストファイルを使用します.ダウンロードして適当な場所に保存後,Emacsで開いて下さい.

Alice was beginning to get very tired of sitting by her sister 
on the bank, and of having nothing to do: once or twice she had 
peeped into the book her sister was reading, but it had no 
pictures or conversations in it, `and what is the use of a book,
' thought Alice `without pictures or conversation?'

So she was considering in her own mind (as well as she could, 
for the hot day made her feel very sleepy and stupid), whether 
the pleasure of making a daisy- chain would be worth the trouble 
of getting up and picking the daisies, when suddenly a White 
Rabbit with pink eyes ran close by her. 


(Lewis Carroll, "Alice's Adventures in Wonderland")
filealice.txt

順々に検索

次のような入力をすることで検索することができます.

キー機能
control sポイントから前方向 (ファイルの終わりに向かう方向) に検索
control rポイントから後方向 (ファイルの先頭に向かう方向) に検索

では実際に‘Alice’という文字列がどこに出現するのかを検索してみましょう.

ポイントがファイルの先頭にある状態で control s と入力すると,ミニバッファが以下のようになるはずです.

I-search:

ここで‘A’と入力して下さい.間違えたらbsで修正して下さい.ミニバッファに‘A’と表示されます.また同時にファイル本文の先頭の‘Alice’と書かれている部分の‘A’が目立つように色が変わり,その右にポイントが移動します. 次々と‘l’,‘i’,‘c’,‘e’と入力して行って下さい. 入力するたびにマッチする文字の色が変わっていきます. 以下のようにポイントに一番近い Alice が目立つように色が付きます.

[最初の Alice が見つかる]

Alice’と入力し終わったら,enterを入力して検索を終えましょう.

このように,ポイントの位置より前方向で,入力とマッチする文字列の内,一番ポイントの近くにあるものを検索してくれることになります.

そうすると, control r はどのような動作をするか想像がつきますね? ポイントをファイルの末尾に置いた状態で control r を入力し,また‘Alice’を検索してみて下さい.

caution 該当する文字列が存在しないような場合には,ミニバッファに以下のように表示されます.

Failing I-search: Alica

再検索

さて,ポイントに最も近い文字列を検索することができましたが,ファイル内に同じ文字列はもっと存在するはずなので,一つ発見しただけで満足とはいえません. そこで再検索を行いましょう.

例えば,ポイントが本文の先頭にある状態で, 一度前向きに Alice を検索したとします (つまり先頭の Alice が目立っている状態). そこで control s を入力して下さい. 2番目に出現する‘Alice’に目立つ色とポイントが飛んだと思います. さらに control s を入力すると,検索文字列が存在する限りポイントが移動し続けます.

[再検索の図]

一度 enterを入力して検索を終えた場合でも, control scontrol s と入力すると,直前の検索文字列で検索を再開できます.