Previous: 置換コマンドとLaxマッチ, Up: 置換コマンド [Contents][Index]
任意のstringをnewstringで置換します。
regexpにたいする任意のマッチをnewstringで置換します。
‘foo’を‘bar’に置換するとき、すべてではなく、そのうちのいくつかだけを置換したいときは、M-%
(query-replace
)を使います。このコマンドは‘foo’を1つずつ検索して、それを置換するかを毎回尋ねます。この問い合わせを別とすれば、query-replace
はreplace-string
と同様に機能します(無条件の置換を参照)。特にcase-replace
が非nil
のときは、通常のように大文字小文字を区別します(置換コマンドとLaxマッチを参照)。数引数を指定すると、単語区切り文字で区切られた単語だけを考慮します。負のプレフィクス引数は後方に置換します。
C-M-%
(query-replace-regexp
)は、regexpの検索と置換を行います。これはquery-replace
のように問い合わせを行う以外は、replace-regexp
と同様に機能します。
これらのコマンドで行なった以前の置換を再利用できます。query-replace
やquery-replace-regexp
が検索文字列の入力を求めるプロンプトを表示しているとき、M-pとM-nを使用することにより、‘from
->
to’という形式で、以前の置換を表示できます。ここでfromは検索パターン、toはそれの置換、これらの間に表示されるセパレータは変数query-replace-from-to-separator
の値により決定されます。望む置換が表示されたら、RETとタイプしてそれを選択します。この変数の値がnil
の場合、置換はコマンドヒストリーに追加されず、再利用できません。
これらのコマンドは、カレントのマッチを、フェイスquery-replace
を使ってハイライトします。変数query-replace-highlight
をnil
にセットすることにより、このハイライトを無効にできます。他のマッチのハイライトにはインクリメンタル検索(インクリメンタル検索を参照してください)と同様に、フェイスlazy-highlight
が使われます。変数query-replace-lazy-highlight
をnil
にセットすることにより、このハイライトを無効にできます。デフォルトではquery-replace-regexp
は、カレントマッチを置換する展開後の文字列を、ミニバッファーに表示します。特別なシーケンス‘\&’および‘\n’を展開せずに維持するには、query-replace-show-replacement
変数をカスタマイズしてください。インクリメンタル検索中にsearch-highlight-submatches
が副式(subexpression)をハイライトするように(必要に応じて検索を調整するを参照)、変数query-replace-highlight-submatches
はregexpの置換コマンド中で副式をハイライトするかどうかを定義します。
変数query-replace-skip-read-only
に非nil
がセットされている場合、置換コマンドはread-only(読み取り専用)のテキスト内のマッチを無視します。デフォルトでは、それらを無視しません。
以下は文字列またはregexpにたいするマッチが表示されているときにタイプできる文字です:
マッチをnewstringで置き換えます。
カレントマッチを置換せずに次のマッチへスキップします。
カレントマッチを置換して、結果を表示します。そして次に何をするかを文字入力するよう促します。置換がすでに行われているので、この状況ではDELとSPCは等価で、どちらも次のマッチへ移動します。
ここでC-r(以下を参照)をタイプして、置換されたテキストを編集できます。
undo
コマンド(C-x
uとタイプする。Undo(取り消し)を参照されたい)で置換をアンドゥすることもできます。置換を取り消すこともできます。これはquery-replace
を終了させるので、さらに置換を行う場合は、C-x
ESC ESC RETで置換を再開しなければなりません(ミニバッファーでのコマンドの繰り返しを参照)。
これ以上の置換を行わずに終了します。
カレントマッチを置換してから、これ以上の検索を行わずに終了します。
これ以上の問い合わせをせずに、残りのマッチをすべて置換します。
前のマッチの位置に戻ります。これは間違えて変更したときや、再検証したい場合に使います。
最後の置換をアンドゥ(undo: 取り消し)して、その置換が行われた位置に戻ります。
すべての置換をアンドゥして、最初の置換が行われた位置に戻ります。
再帰編集レベル(recursive editing level)に入ります。これはマッチをnewstringで置換するだけでなく、編集したい場合に使用します。編集を終えたらC-M-cで再帰編集レベルを抜けて、次のマッチを処理します。再帰編集レベルを参照してください。
マッチを削除してから、C-rと同様に再帰編集レベルに入ります。これはstringを削除してから、テキストを挿入することにより置換を行う場合に使用します。編集を終えたらC-M-cで再帰編集レベルを抜けて、次のマッチを処理します。
置換文字列をミニバッファーで編集します。RETでミニバッファーを抜けると、カレントマッチをミニバッファーの内容で置換します。この新しい置換文字列は、残りのマッチにたいしても適用されます。
これはeと似ていますが、次の置換をcase(大文字小文字)に厳格に行います。つまり‘foo’から‘bar’にquery-replace
していたら、‘Foo’のようなテキストは通常は‘Bar’に置き換えられます。カレントの置換をcaseに厳格に行うには、このコマンドを使用してください。
スクリーンを再描画します。その後でカレントマッチにたいして何を行うか、別の文字をタイプして指定しなければなりません。
複数バッファーの置換で、残りのバッファーの、残りのマッチをすべて置換します(これは選択したファイルにたいして問い合わせつきの置換を行う、DiredのQコマンドと似ています)。これはすべての一連の問い合わせにたいして、これ以上のユーザーとの対話なしに“yes”を答えます。
複数バッファーの置換で、カレントバッファーの残りのマッチを置換せずに、次のバッファーへスキップします。これはカレントバッファーのマッチにたいする問い合わせに“no”を答えて、次のバッファーへと処理を続けます。
上述したオプションの要約を表示します。その後でカレントマッチにたいして何を行うか、別の文字をタイプして指定しなければなりません。
これらのエイリアス文字以外の文字は、query-replace
を終了してから、キーシーケンスの残りの部分を読みとります。したがってC-kとタイプすると、query-replace
を終了してから、行末までをkillします。特に、C-gは単にquery-replace
をexitします。
一度終了したquery-replace
を再開するには、C-x ESC
ESCを使います。query-replace
は引数の読み取りにミニバッファーを使っているので、このキーシーケンスで再開させることができます。C-x ESC ESCを参照してください。
オプションsearch-invisible
は、query-replace
が非表示のテキストを扱う方法を決定します。Outline Searchを参照してください。
選択されたファイルにたいして問い合わせつきの置換を行う、DiredのQコマンドについては、ファイルにたいする操作を参照してください。regexpにマッチするファイル名にたいして、ファイル名の変更、ファイルのコピー、ファイルのリンクを行うDiredのコマンドについては、Diredでのファイル名の変更を参照してください。