manpagez: man pages & more
info emacs
Home | html | info | man
[ < ] [ > ]   [ << ] [ 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] [ ? ]
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.