-
-
Notifications
You must be signed in to change notification settings - Fork 101
/
CategorySearchAndReplace
149 lines (95 loc) · 7.98 KB
/
CategorySearchAndReplace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Emacs can search in the current [[buffer]], across multiple buffers or in files.
You can also search Emacs itself: introspect documentation, [[command]]s, [[face]]s, [[variable]]s,... (See SelfDocumentation).
Some [EmacsWiki:CategoryCompletion completion] features use search.
This page is about searching and replacing text in Emacs. Look for `search' in the EmacsManual for more information -- that will also provide info about replacing.
[:SearchInBuffers]
== Search in Buffers ==
Vanilla:
* IncrementalSearch -- aka [[Isearch]]. ‘C-s’ and `C-M-s'.
* Incremental search across multiple buffers: command `multi-isearch-buffers'. (See the Emacs manual: [[Manual:Other Repeating Search]].)
* OccurMode -- ‘M-x occur’ and `multi-occur'. Similar to [[GrepMode|grep]], but for buffers, not files.
Additional:
* [[AceJump]] -- a minor mode for Emacs, enabling direct cursor-moving in current view.
* AcmeSearch -- Simple right-click searching.
* BuffersMisc
* [[CharacterFold+]] -- optional symmetric character folding for Isearch
* [[Icicles]] -- two unrelated features: `icicle-search' and [[completion]] for Isearch:
** [[Icicles - Search Commands, Overview|Icicles search]]: [[regexp|Regexp]] search within ''search contexts'': text zones defined using regexps (and their subgroups) or using [[text property|text or overlay property]] values. Combine syntactic and semantic (predicate) searching. (Cf. [[Isearch+]].)
** Use completion against previous [[Icicles - Isearch Enhancements|Isearch search strings]].
* [[VisualRegexp]] -- using the ##visual-regexp-steroids## extension, you can use a modern regexp engine to power ##isearch##.
[:IsearchPlusContexts]
* [[Isearch+]] -- Many extensions to Emacs' standard [[Isearch]], including search within ''search contexts'': [[text property|text or overlay property]] zones, [[ImenuMode|Imenu]] definitions, and Emacs THINGs (sexps, lists, symbols, paragraphs, whatever). (Cf. [[Icicles - Search Commands, Overview|Icicles search]].)
* LazySearch -- A new search mode to search string around point fast.
* [[msearch]] -- Search matches of text dragged with the mouse in the current buffer.
* [[Replace+]] -- Extensions to OccurMode.
* SearchBuffers -- Like OccurMode, but for multiple buffers.
* SearchKeybind -- `occur' for key bindings and their commands.
* SearchNear -- Using OccurMode to find words that are near each other.
* SummaryEditMode -- List up matched strings from a buffer, and display them in summary buffer.
* SuperDuperRedundantPlus -- can mark all files in dired buffer using `dired-mark-files-containing-regexp' followed by `dired-do-query-replace-regexp'.
[:ReplaceInBuffers]
== Replace in Buffers ==
Vanilla:
* ReplaceRegexp -- Query-replace, possibly evaluating an EmacsLisp [[sexp]] to compute the replacement text.
* After starting Isearch, `query-replace' with `##M-%##' or `query-replace-regexp' with `##C-M-%##', using the current search string.
* IbufferMode -- Operate on multiple buffers, including query replace (Emacs 22).
Additional:
* [[VisualRegexp]] -- like `M-x replace-regexp', but with live visual feedback directly in the buffer.
* [[Anything]] -- `M-x anything-regexp', `M-x anything-query-replace-regexp': narrow the matched lines by multiple patterns and replace.
[:IciclesSearchAndReplace]
* Icicles [[Icicles - Search-And-Replace|search-and-replace]]
-- Replace individual search hits in any order. Replace all. Search hits can be [[regexp]] matches within a search context that corresponds to a regexp or a regexp-subgroup match. Lisp [[sexp]] eval replacement text is allowed, as in ReplaceRegexp. Search and replace across multiple buffers, files, bookmarks, or saved [[region]]s.
[:IciclesSearchAndReplace]
* [[Iedit]] -- Replace multiple occurrences of the [[Isearch]] string.
* [[Isearch+]] -- ''On-demand'' replacement during Isearch: hit `C-M-RET' to replace the current search hit, the next ''N'' search hits, or all remaining search hits. Can limit search-and-replace to ''[[#IsearchPlusContexts|search contexts]]''. Similar to [[#IciclesSearchAndReplace|Icicles search-and-replace]] ([[sexp]] eval replacement etc.).
* QueryExchange -- Exchange two string interactively.
* [[Replace+]] -- Extensions to Emacs' standard query-replace commands.
* ReplaceGarbageChars -- Replace MS and other goofy/"garbage" characters with latin1. Simple elisp code can be easily applied to LaTeX or HTML or other kinds of buffers.
* ReplaceRecentCharacter -- Quickly fix typos using a non-incremental search and replace.
* SearchAndReplaceDelimitedStrings -- Replace (only) the prefix and suffix of a pattern.
* [[Replace-in-buffer]] -- Replace text in complete buffer, use current region or next word as pattern
* Lisp:replace-string-simulatenously.el -- Replace several strings at the same time. For example, you want to replace "yes"->"no" and "no"->"yes" in some text. If you do it in two replacements, it will replace all occurences "yes" for "no", so you can't differentiate between those. With this function, you just do M-x replace-string-simulatenously yes RET no RET no RET yes RET RET
[:SearchAcrossFiles]
== Search Across Files ==
You can also, of course, visit files to be searched in buffers, and then use the techniques above for [[#SearchInBuffers]].
Vanilla:
* GrepMode -- `M-x grep'
* `M-x find-name-dired'
* RecursiveGrep, `grep-find', `find-grep-dired'
Additional:
* [[Anything]] -- `M-x anything-grep' in Lisp:anything-grep.el: narrow the list by multiple patterns
* [[CharacterFold+]] -- optional symmetric character folding for Isearch
* FindrPackage -- Breadth-first search for files. Search for regexp within found files.
* [[Grep+]] -- Emacs `grep' enhancements
* Icicles search [[Icicles - Search Commands, Overview|across multiple files]]. Icicles [[Icicles - Other Search Commands|compilation search]] to visit source-file hits in a ##*grep*## or any compilation buffer. Multiple levels of regexp search.
[:ReplaceAcrossFiles]
== Replace Across Files ==
Vanilla:
* DiredSearchAndReplace (`Q' in Dired) -- Mark files, then search and replace in them.
** FindGrepDiredSearchAndReplace -- find matches in files with grep and replace them with Dired.
* `M-x find-name-dired'
* `M-x grep' -- GrepMode
* RecursiveGrep, `grep-find', `find-grep-dired'
* `M-x tags-query-replace' -- replace using etags' TagFile.
Additional:
* [[Anything]] -- `M-x anything-grep' in Lisp:anything-grep.el: narrow the list by multiple patterns.
* FindrPackage -- Breadth-first search for files. Search for regexp within found files.
* GlobRep Search across multiple files, edit these lines, and save back.
* GrepEd Edit 'grep' results and write them back. Does not support M-%, which limits its usefulness.
* Lisp:wgrep.el Writable grep results
** wgrep.el is based on Lisp:grep-edit.el http://www.bookshelf.jp/elc/grep-edit.el -- Supports M-%
* grep-x similar to GlobRep. http://groups.google.com/groups?q=author:shouman%40goofy.cc.utexas.edu&hl=en&safe=off&rnum=2&selm=SHOUMAN.95Apr26224953%40goofy.cc.utexas.edu Usenet Article 1995/04/27
* Icicles [[Icicles - Search-And-Replace|search-and-replace]]
-- see [[#IciclesSearchAndReplace|above]]. Use Icicles [[Icicles - Other Search Commands|compilation search-and-replace]] to visit source-file hits in a ##*grep*## buffer and replace text within them.
* MultiReplace
* http://groups.google.com/groups?q=replace+group:gnu.emacs.sources
* TinyReplace replace over multiple files (run M-x grep to and hit % in compile buffer) RCS support.
* TraverseDirectory search a word or regexp in all files in dir and subdir (recursive search).
* VersionControlSearchAndReplace -- Search and replace VC files, using Dired `Q'.
* (Links are broken or faulty - http://www.peerfear.org/el/replace-recursive.el (successor of http://www.peerfear.org/el/igrep-find-query-replace.el))
== See Also ==
* [[Namazu]] -- Text indexing and search.
* [[Tracker]] -- Gnome tool for indexing and search
* LocateFilesAnywhere to find files on your file system, when you don't know where they are. (This does not search the files; it locates them.)
----
CategoryExternalUtilities CategoryRegexp