I want to have a similar tool in Emacs as the following in Vim
:g/search/
to get a list of matches.
How can you get a list of matches in Emacs?
Mx occur
?
From the manual :
Mx occur
Prompt for a regexp, and display a list showing each line in the buffer that contains a match for it. The text that matched is highlighted using the
match
face. To limit the search to part of the buffer, narrow to that part (see Narrowing). A numeric argumentn
specifies thatn
lines of context are to be displayed before and after each matching line. The default number of context lines is specified by the variablelist-matching-lines-default-context-lines
.In the
*Occur*
buffer, you can click on each entry, or move point there and typeRET
, to visit the corresponding position in the buffer that was searched.o
andCo
display the match in another window;Co
does not select it. Alternatively, you can use theCx `
(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. TypeCc Cc
to return to Occur mode.The command
Mx list-matching-lines
is a synonym forMx occur
.
In addition to Mx occurr
check also Mx grep. This works in several files at once.
My usual workflow is not to get a list and choose (don't know how to do that), but to use the incremental search:
C-s <search target>
gets the fist match after the point. If you don't like it another Cs
gets the next one. Continue until you're happy (you'll need an extra Cs
to wrap around from the and of the buffer). New enough emacsen can also highlight all the matches that are visible.
As noted in the comments by Török Gábor, this is the typical keybinding of isearch-forward
. In the event that your bindings are different, you need to modify the prescribed procedure.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.