12.7.4 Query Replace
`M-% STRING <RET> NEWSTRING <RET>'
`M-x query-replace <RET> STRING <RET> NEWSTRING <RET>'
Replace some occurrences of STRING with NEWSTRING.
`M-x query-replace-regexp <RET> REGEXP <RET> NEWSTRING <RET>'
Replace some matches for REGEXP with NEWSTRING.
If you want to change only some of the occurrences of `foo' to
`bar', not all of them, you can use `query-replace' instead of `M-%'.
This command finds occurrences of `foo' one by one, displays each
occurrence, and asks you whether to replace it. A numeric argument to
`query-replace' tells it to consider only occurrences that are bounded
by word-delimiter characters.
Aside from querying, `query-replace' works just like
`replace-string', and `query-replace-regexp' works just like
The things you can type when you are shown an occurrence of STRING
or a match for REGEXP are:
to replace the occurrence with NEWSTRING. This preserves case,
just like `replace-string', provided `case-replace' is non-`nil',
as it normally is.
to skip to the next occurrence without replacing this one.
to replace this occurrence and display the result. You are then
prompted for another input character. However, since the
replacement has already been made, <DEL> and <SPC> are equivalent.
At this point, you can type `C-r' (see below) to alter the
replaced text. To undo the replacement, you can type `C-x u'.
This exits the `query-replace'. If you want to do further
replacement you must use `C-x <ESC> <ESC>' to restart (Note:
to exit without doing any more replacements.
to replace this occurrence and then exit.
to replace all remaining occurrences without asking again.
to go back to the location of the previous occurrence (or what
used to be an occurrence), in case you changed it by mistake.
This works by popping the mark ring. Only one `^' in a row is
allowed, because only one previous replacement location is kept
to enter a recursive editing level, in case the occurrence needs
to be edited rather than just replaced with NEWSTRING. When you
are done, exit the recursive editing level with `C-M-c' and the
next occurrence will be displayed. Note: Recursive Edit.
to delete the occurrence, and then enter a recursive editing level
as in `C-r'. Use the recursive edit to insert text to replace the
deleted occurrence of STRING. When done, exit the recursive
editing level with `C-M-c' and the next occurrence will be
to redisplay the screen and then give another answer.
to display a message summarizing these options, then give another
If you type any other character, Emacs exits the `query-replace', and
executes the character as a command. To restart the `query-replace',
use `C-x <ESC> <ESC>', which repeats the `query-replace' because it
used the minibuffer to read its arguments. *Note C-x ESC ESC:
automatically generated by info2www version 220.127.116.11