[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
20.10 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-nil
.
Aside from occur
and its variants, all operate on the text from
point to the end of the buffer, or on the active region in Transient
Mark mode.
- M-x occur <RET> regexp <RET>
Display a list showing each line in the buffer that contains a match for regexp. To limit the search to part of the buffer, narrow to that part (see section Narrowing). A numeric argument n specifies that n lines of context are to be displayed before and after each matching line. Currently,
occur
can not correctly handle multiline matches.The buffer ‘*Occur*’ containing the output serves as a menu for finding the occurrences in their original context. Click Mouse-2 on an occurrence listed in ‘*Occur*’, or position point there and type <RET>; this switches to the buffer that was searched and moves point to the original of the chosen occurrence. o and C-o display the match in another window; C-o does not select it.
After using M-x occur, you can use
next-error
to visit the occurrences found, one by one. Compilation Mode.- M-x list-matching-lines
Synonym for M-x occur.
- M-x multi-occur <RET> buffers <RET> regexp <RET>
This function is just like
occur
, except it is able to search through multiple buffers. It asks you to specify the buffer names one by one.- M-x multi-occur-in-matching-buffers <RET> bufregexp <RET> regexp <RET>
This function 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 <RET> regexp <RET>
Print the number of matches for regexp that exist in the buffer after point. In Transient Mark mode, if the region is active, the command operates on the region instead.
- M-x flush-lines <RET> regexp <RET>
This command deletes each line that contains a match for regexp, operating on the text after point; it deletes the current line if it contains a match starting after point. In Transient Mark mode, if the region is active, the command operates on the region instead; it deletes a line partially contained in the region if it contains a match entirely contained in the region.
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 <RET> regexp <RET>
This command deletes each line that does not contain a match for regexp, operating on the text after point; if point is not at the beginning of a line, it always keeps the current line. In Transient Mark mode, 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.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |