15.11 Other Search-and-Loop Commands
Here are some other commands that find matches for a regular
expression. They all ignore case in matching, if the pattern contains
no upper-case letters and
case-fold-search is non-
occur and its variants, all operate on the text from
point to the end of the buffer, or on the region if it is active.
- M-x multi-isearch-buffers
- Prompt for one or more buffer names, ending with <RET>; then,
begin a multi-buffer incremental search in those buffers. (If the
search fails in one buffer, the next C-s tries searching the
next specified buffer, and so forth.) With a prefix argument, prompt
for a regexp and begin a multi-buffer incremental search in buffers
matching that regexp.
- M-x multi-isearch-buffers-regexp
- This command is just like
multi-isearch-buffers, except it
performs an incremental regexp search.
- M-x occur
- Prompt for a regexp, and display a list showing each line in the
buffer that contains a match for it. To limit the search to part of
the buffer, narrow to that part (see Narrowing). A numeric
argument n specifies that n lines of context are to be
displayed before and after each matching line.
In the *Occur* buffer, you can click on each entry, or move
point there and type <RET>, to visit the corresponding position in
the buffer that was searched. o and C-o display the match
in another window; C-o does not select it. Alternatively, you
can use the C-x ` (
next-error) command to visit the
occurrences one by one (see Compilation Mode).
Typing e in the *Occur* buffer switches to Occur Edit
mode, in which edits made to the entries are also applied to the text
in the originating buffer. Type C-c C-c to return to Occur
The command M-x list-matching-lines is a synonym for M-x
- M-s o
occur using the search string of the last incremental
string search. You can also run M-s o when an incremental
search is active; this uses the current search string.
- M-x multi-occur
- This command is just like
occur, except it is able to search
through multiple buffers. It asks you to specify the buffer names one
- M-x multi-occur-in-matching-buffers
- This command is similar to
multi-occur, except the buffers to
search are specified by a regular expression that matches visited file
names. With a prefix argument, it uses the regular expression to
match buffer names instead.
- M-x how-many
- Prompt for a regexp, and print the number of matches for it in the
buffer after point. If the region is active, this operates on the
- M-x flush-lines
- Prompt for a regexp, and delete each line that contains a match for
it, operating on the text after point. This command deletes the
current line if it contains a match starting after point. If the
region is active, it operates on the region instead; if a line
partially contained in the region contains a match entirely contained
in the region, it is deleted.
If a match is split across lines,
flush-lines deletes all those
lines. It deletes the lines before starting to look for the next
match; hence, it ignores a match starting on the same line at which
another match ended.
- M-x keep-lines
- Prompt for a regexp, and delete each line that does not contain
a match for it, operating on the text after point. If point is not at
the beginning of a line, this command always keeps the current line.
If the region is active, the command operates on the region instead;
it never deletes lines that are only partially contained in the region
(a newline that ends a line counts as part of that line).
If a match is split across lines, this command keeps all those lines.