Previous: Replacement and Case, Up: Replace
‘foo’のすべての出現ではなく、
そのうちのいくつかだけを‘bar’に変更したいときには、
通常のreplace-string
を使うことはできません。
かわりに、M-%(query-replace
)を使います。
このコマンドは‘foo’の出現をみつけるたびに、
その出現を表示し、置換するかどうか聞いてきます。
query-replace
に数引数を指定すると、
単語区切り文字で区切られた出現だけを対象とします。
通常どおりcase-replace
がnil
以外であれば、
replace-string
と同じく、
このコマンドも大文字小文字の違いを保存します。
問い合わせることを除けば、
query-replace
はreplace-string
と同様に動作し、
query-replace-regexp
はreplace-regexp
と同様に動作します。
このコマンドは、C-M-%で実行できます。
stringの出現やregexpに一致したものが表示されたときに 打てる文字はつぎのとおりです。
この時点では、C-r(下記参照)を打って、置換したテキストを変更できる。
また、C-x uと打って、置換をアンドゥする(もとに戻す)こともできるが、
そうすると、query-replace
を終了してしまう。
さらに先の置換を行いたいときには、
C-x <ESC> <ESC> <RET>を使って再開する必要がある
(see Repetition)。
query-replace
は直前の1つの置換位置だけを記録するため、
^を続けて入力しても意味はない。
上記のコマンドの別名である文字が他にもいくつかあります。 y、n、qは、それぞれ、 <SPC>、<DEL>、<RET>に等価です。
これ以外の文字はquery-replace
を終了し、
その文字はキー列の一部になります。
したがって、C-kと打つと、
query-replace
を終了してから、行末までをキルします。
一度抜けたquery-replace
を再開するには、
C-x <ESC> <ESC>を使います。
このコマンドはquery-replace
を繰り返します。
というのは、query-replace
はミニバッファで引数を読み取るからです。
See C-x ESC ESC。
ファイル名に対して正規表現に一致する部分を置換することで、 ファイルの改名、コピー、リンクを行うdiredコマンドについては、 Transforming File Namesも参照してください。