Emacs/emacs/Other-Repeating-Search
Next: Search Customizations, Previous: Replace, Up: Search [Contents][Index]
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-nil
.
Aside from multi-occur
and multi-occur-in-matching-buffers
,
which always search the whole buffer, 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 multi-isearch-files
Prompt for one or more file names, ending with RET
; then,
begin a multi-file incremental search in those files. (If the
search fails in one file, the next C-s tries searching the
next specified file, and so forth.) With a prefix argument, prompt
for a regexp and begin a multi-file incremental search in files
matching that regexp.
M-x multi-isearch-files-regexp
This command is just like multi-isearch-files
, except it
performs an incremental regexp search.
In some modes that set the buffer-local variable
multi-isearch-next-buffer-function
(e.g., in Change Log mode)
a multi-file incremental search is activated automatically.
M-x occur
M-s o
Prompt for a regexp, and display a list showing each line in the
buffer that contains a match for it. If you type M-n at the
prompt, you can reuse search strings from previous incremental
searches. The text that matched is highlighted using the match
face. A numeric argument n
specifies that n
lines of
context are to be displayed before and after each matching line.
The default number of context lines is specified by the variable
list-matching-lines-default-context-lines
. When
list-matching-lines-jump-to-current-line
is non-nil
the
current line is shown highlighted with face
list-matching-lines-current-line-face
and the point is set at
the first match after such line.
You can also run M-s o when an incremental search is active; this uses the current search string.
Note that matches for the regexp you type are extended to include complete lines, and a match that starts before the previous match ends is not considered a match.
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 M-g M-n (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
mode.
The command M-x list-matching-lines is a synonym for M-x occur.
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
by 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 region instead.
M-x flush-lines
Prompt for a regexp, and delete each line that contains a match for it, operating on the text after point. When the command finishes, it prints the number of deleted matching lines.
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.
Next: Search Customizations, Previous: Replace, Up: Search [Contents][Index]