If you want to change only some of the occurrences of ‘foo’ to
‘bar’, not all of them, use M-% (query-replace).
This command finds occurrences of ‘foo’ one by one, displays each
occurrence and asks you whether to replace it. Aside from querying,
query-replace works just like replace-string
(see Unconditional Replace). In particular, it preserves case
provided case-replace is non-nil, as it normally is
(see Replacement and Case). A numeric argument means consider
only occurrences that are bounded by word-delimiter characters.
C-M-% performs regexp search and replace (query-replace-regexp).
It works like replace-regexp except that it queries
like query-replace.
These commands highlight the current match using the face
query-replace. They highlight other matches using
lazy-highlight just like incremental search (see Incremental Search). By default, query-replace-regexp will show
substituted replacement string for the current match in the
minibuffer. If you want to keep special sequences ‘\&’ and
‘\n’ unexpanded, customize
query-replace-show-replacement variable.
The characters you can type when you are shown a match for the string or regexp are:
You can type C-r at this point (see below) to alter the replaced
text. You can also type C-x u to undo the replacement; this exits
the query-replace, so if you want to do further replacement you
must use C-x <ESC> <ESC> <RET> to restart
(see Repetition).
Some other characters are aliases for the ones listed above: y, n and q are equivalent to <SPC>, <DEL> and <RET>.
Aside from this, any other character exits the query-replace,
and is then reread as part of a key sequence. Thus, if you type
C-k, it exits the query-replace and then kills to end of
line.
To restart a query-replace once it is exited, use C-x
<ESC> <ESC>, which repeats the query-replace because it
used the minibuffer to read its arguments. See C-x ESC ESC.
See Operating on Files, for the Dired Q command which performs query replace on selected files. See also Transforming File Names, for Dired commands to rename, copy, or link files by replacing regexp matches in file names.
blog comments powered by Disqus