aia 0.3.4 → 0.3.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.semver +6 -0
- data/CHANGELOG.md +12 -0
- data/README.md +165 -55
- data/Rakefile +2 -0
- data/justfile +167 -0
- data/lib/aia/cli.rb +228 -115
- data/lib/aia/config.rb +7 -0
- data/lib/aia/logging.rb +49 -12
- data/lib/aia/main.rb +29 -15
- data/lib/aia/prompt_processing.rb +208 -4
- data/lib/aia/tools/editor.rb +50 -0
- data/lib/aia/{external → tools}/mods.rb +69 -10
- data/lib/aia/{external → tools}/sgpt.rb +2 -2
- data/lib/aia/{external → tools}/subl.rb +23 -5
- data/lib/aia/tools/vim.rb +91 -0
- data/lib/aia/{external/tool.rb → tools.rb} +28 -24
- data/lib/aia/version.rb +5 -1
- data/lib/aia.rb +17 -3
- data/main.just +56 -0
- data/man/aia.1 +134 -0
- data/man/aia.1.md +107 -0
- metadata +72 -18
- data/lib/aia/configuration.rb +0 -39
- data/lib/aia/external/,keep +0 -0
- data/lib/aia/external/.irbrc +0 -11
- data/lib/aia/external/ag.rb +0 -103
- data/lib/aia/external/bat.rb +0 -189
- data/lib/aia/external/fzf.rb +0 -147
- data/lib/aia/external/glow.rb +0 -37
- data/lib/aia/external/rg.rb +0 -1163
- data/lib/aia/external.rb +0 -259
- data/lib/aia/external_two.rb +0 -43
data/lib/aia/external/rg.rb
DELETED
@@ -1,1163 +0,0 @@
|
|
1
|
-
# lib/aia/external/rg.rb
|
2
|
-
|
3
|
-
class AIA::External::Rg < AIA::External::Tool
|
4
|
-
def initialize
|
5
|
-
super
|
6
|
-
@role = :search
|
7
|
-
@desc = "Search tool like grep and The Silver Searcher"
|
8
|
-
@url = "https://github.com/BurntSushi/ripgrep"
|
9
|
-
end
|
10
|
-
|
11
|
-
def command(search_term, options = {})
|
12
|
-
rg_command = "rg --color=always --line-number --no-heading --smart-case #{search_term}"
|
13
|
-
"#{rg_command} | fzf #{options[:fzf_options]}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
__END__
|
18
|
-
|
19
|
-
ripgrep 13.0.0
|
20
|
-
Andrew Gallant <jamslam@gmail.com>
|
21
|
-
|
22
|
-
ripgrep (rg) recursively searches the current directory for a regex pattern.
|
23
|
-
By default, ripgrep will respect gitignore rules and automatically skip hidden
|
24
|
-
files/directories and binary files.
|
25
|
-
|
26
|
-
Use -h for short descriptions and --help for more details.
|
27
|
-
|
28
|
-
Project home page: https://github.com/BurntSushi/ripgrep
|
29
|
-
|
30
|
-
|
31
|
-
USAGE:
|
32
|
-
rg [OPTIONS] PATTERN [PATH ...]
|
33
|
-
rg [OPTIONS] -e PATTERN ... [PATH ...]
|
34
|
-
rg [OPTIONS] -f PATTERNFILE ... [PATH ...]
|
35
|
-
rg [OPTIONS] --files [PATH ...]
|
36
|
-
rg [OPTIONS] --type-list
|
37
|
-
command | rg [OPTIONS] PATTERN
|
38
|
-
rg [OPTIONS] --help
|
39
|
-
rg [OPTIONS] --version
|
40
|
-
|
41
|
-
ARGS:
|
42
|
-
<PATTERN>
|
43
|
-
A regular expression used for searching. To match a pattern beginning with a
|
44
|
-
dash, use the -e/--regexp flag.
|
45
|
-
|
46
|
-
For example, to search for the literal '-foo', you can use this flag:
|
47
|
-
|
48
|
-
rg -e -foo
|
49
|
-
|
50
|
-
You can also use the special '--' delimiter to indicate that no more flags
|
51
|
-
will be provided. Namely, the following is equivalent to the above:
|
52
|
-
|
53
|
-
rg -- -foo
|
54
|
-
|
55
|
-
<PATH>...
|
56
|
-
A file or directory to search. Directories are searched recursively. File paths
|
57
|
-
specified on the command line override glob and ignore rules.
|
58
|
-
|
59
|
-
OPTIONS:
|
60
|
-
-A, --after-context <NUM>
|
61
|
-
Show NUM lines after each match.
|
62
|
-
|
63
|
-
This overrides the --context and --passthru flags.
|
64
|
-
|
65
|
-
--auto-hybrid-regex
|
66
|
-
DEPRECATED. Use --engine instead.
|
67
|
-
|
68
|
-
When this flag is used, ripgrep will dynamically choose between supported regex
|
69
|
-
engines depending on the features used in a pattern. When ripgrep chooses a
|
70
|
-
regex engine, it applies that choice for every regex provided to ripgrep (e.g.,
|
71
|
-
via multiple -e/--regexp or -f/--file flags).
|
72
|
-
|
73
|
-
As an example of how this flag might behave, ripgrep will attempt to use
|
74
|
-
its default finite automata based regex engine whenever the pattern can be
|
75
|
-
successfully compiled with that regex engine. If PCRE2 is enabled and if the
|
76
|
-
pattern given could not be compiled with the default regex engine, then PCRE2
|
77
|
-
will be automatically used for searching. If PCRE2 isn't available, then this
|
78
|
-
flag has no effect because there is only one regex engine to choose from.
|
79
|
-
|
80
|
-
In the future, ripgrep may adjust its heuristics for how it decides which
|
81
|
-
regex engine to use. In general, the heuristics will be limited to a static
|
82
|
-
analysis of the patterns, and not to any specific runtime behavior observed
|
83
|
-
while searching files.
|
84
|
-
|
85
|
-
The primary downside of using this flag is that it may not always be obvious
|
86
|
-
which regex engine ripgrep uses, and thus, the match semantics or performance
|
87
|
-
profile of ripgrep may subtly and unexpectedly change. However, in many cases,
|
88
|
-
all regex engines will agree on what constitutes a match and it can be nice
|
89
|
-
to transparently support more advanced regex features like look-around and
|
90
|
-
backreferences without explicitly needing to enable them.
|
91
|
-
|
92
|
-
This flag can be disabled with --no-auto-hybrid-regex.
|
93
|
-
|
94
|
-
-B, --before-context <NUM>
|
95
|
-
Show NUM lines before each match.
|
96
|
-
|
97
|
-
This overrides the --context and --passthru flags.
|
98
|
-
|
99
|
-
--binary
|
100
|
-
Enabling this flag will cause ripgrep to search binary files. By default,
|
101
|
-
ripgrep attempts to automatically skip binary files in order to improve the
|
102
|
-
relevance of results and make the search faster.
|
103
|
-
|
104
|
-
Binary files are heuristically detected based on whether they contain a NUL
|
105
|
-
byte or not. By default (without this flag set), once a NUL byte is seen,
|
106
|
-
ripgrep will stop searching the file. Usually, NUL bytes occur in the beginning
|
107
|
-
of most binary files. If a NUL byte occurs after a match, then ripgrep will
|
108
|
-
still stop searching the rest of the file, but a warning will be printed.
|
109
|
-
|
110
|
-
In contrast, when this flag is provided, ripgrep will continue searching a file
|
111
|
-
even if a NUL byte is found. In particular, if a NUL byte is found then ripgrep
|
112
|
-
will continue searching until either a match is found or the end of the file is
|
113
|
-
reached, whichever comes sooner. If a match is found, then ripgrep will stop
|
114
|
-
and print a warning saying that the search stopped prematurely.
|
115
|
-
|
116
|
-
If you want ripgrep to search a file without any special NUL byte handling at
|
117
|
-
all (and potentially print binary data to stdout), then you should use the
|
118
|
-
'-a/--text' flag.
|
119
|
-
|
120
|
-
The '--binary' flag is a flag for controlling ripgrep's automatic filtering
|
121
|
-
mechanism. As such, it does not need to be used when searching a file
|
122
|
-
explicitly or when searching stdin. That is, it is only applicable when
|
123
|
-
recursively searching a directory.
|
124
|
-
|
125
|
-
Note that when the '-u/--unrestricted' flag is provided for a third time, then
|
126
|
-
this flag is automatically enabled.
|
127
|
-
|
128
|
-
This flag can be disabled with '--no-binary'. It overrides the '-a/--text'
|
129
|
-
flag.
|
130
|
-
|
131
|
-
--block-buffered
|
132
|
-
When enabled, ripgrep will use block buffering. That is, whenever a matching
|
133
|
-
line is found, it will be written to an in-memory buffer and will not be
|
134
|
-
written to stdout until the buffer reaches a certain size. This is the default
|
135
|
-
when ripgrep's stdout is redirected to a pipeline or a file. When ripgrep's
|
136
|
-
stdout is connected to a terminal, line buffering will be used. Forcing block
|
137
|
-
buffering can be useful when dumping a large amount of contents to a terminal.
|
138
|
-
|
139
|
-
Forceful block buffering can be disabled with --no-block-buffered. Note that
|
140
|
-
using --no-block-buffered causes ripgrep to revert to its default behavior of
|
141
|
-
automatically detecting the buffering strategy. To force line buffering, use
|
142
|
-
the --line-buffered flag.
|
143
|
-
|
144
|
-
-b, --byte-offset
|
145
|
-
Print the 0-based byte offset within the input file before each line of output.
|
146
|
-
If -o (--only-matching) is specified, print the offset of the matching part
|
147
|
-
itself.
|
148
|
-
|
149
|
-
If ripgrep does transcoding, then the byte offset is in terms of the the result
|
150
|
-
of transcoding and not the original data. This applies similarly to another
|
151
|
-
transformation on the source, such as decompression or a --pre filter. Note
|
152
|
-
that when the PCRE2 regex engine is used, then UTF-8 transcoding is done by
|
153
|
-
default.
|
154
|
-
|
155
|
-
-s, --case-sensitive
|
156
|
-
Search case sensitively.
|
157
|
-
|
158
|
-
This overrides the -i/--ignore-case and -S/--smart-case flags.
|
159
|
-
|
160
|
-
--color <WHEN>
|
161
|
-
This flag controls when to use colors. The default setting is 'auto', which
|
162
|
-
means ripgrep will try to guess when to use colors. For example, if ripgrep is
|
163
|
-
printing to a terminal, then it will use colors, but if it is redirected to a
|
164
|
-
file or a pipe, then it will suppress color output. ripgrep will suppress color
|
165
|
-
output in some other circumstances as well. For example, if the TERM
|
166
|
-
environment variable is not set or set to 'dumb', then ripgrep will not use
|
167
|
-
colors.
|
168
|
-
|
169
|
-
The possible values for this flag are:
|
170
|
-
|
171
|
-
never Colors will never be used.
|
172
|
-
auto The default. ripgrep tries to be smart.
|
173
|
-
always Colors will always be used regardless of where output is sent.
|
174
|
-
ansi Like 'always', but emits ANSI escapes (even in a Windows console).
|
175
|
-
|
176
|
-
When the --vimgrep flag is given to ripgrep, then the default value for the
|
177
|
-
--color flag changes to 'never'.
|
178
|
-
|
179
|
-
--colors <COLOR_SPEC>...
|
180
|
-
This flag specifies color settings for use in the output. This flag may be
|
181
|
-
provided multiple times. Settings are applied iteratively. Colors are limited
|
182
|
-
to one of eight choices: red, blue, green, cyan, magenta, yellow, white and
|
183
|
-
black. Styles are limited to nobold, bold, nointense, intense, nounderline
|
184
|
-
or underline.
|
185
|
-
|
186
|
-
The format of the flag is '{type}:{attribute}:{value}'. '{type}' should be
|
187
|
-
one of path, line, column or match. '{attribute}' can be fg, bg or style.
|
188
|
-
'{value}' is either a color (for fg and bg) or a text style. A special format,
|
189
|
-
'{type}:none', will clear all color settings for '{type}'.
|
190
|
-
|
191
|
-
For example, the following command will change the match color to magenta and
|
192
|
-
the background color for line numbers to yellow:
|
193
|
-
|
194
|
-
rg --colors 'match:fg:magenta' --colors 'line:bg:yellow' foo.
|
195
|
-
|
196
|
-
Extended colors can be used for '{value}' when the terminal supports ANSI color
|
197
|
-
sequences. These are specified as either 'x' (256-color) or 'x,x,x' (24-bit
|
198
|
-
truecolor) where x is a number between 0 and 255 inclusive. x may be given as
|
199
|
-
a normal decimal number or a hexadecimal number, which is prefixed by `0x`.
|
200
|
-
|
201
|
-
For example, the following command will change the match background color to
|
202
|
-
that represented by the rgb value (0,128,255):
|
203
|
-
|
204
|
-
rg --colors 'match:bg:0,128,255'
|
205
|
-
|
206
|
-
or, equivalently,
|
207
|
-
|
208
|
-
rg --colors 'match:bg:0x0,0x80,0xFF'
|
209
|
-
|
210
|
-
Note that the the intense and nointense style flags will have no effect when
|
211
|
-
used alongside these extended color codes.
|
212
|
-
|
213
|
-
--column
|
214
|
-
Show column numbers (1-based). This only shows the column numbers for the first
|
215
|
-
match on each line. This does not try to account for Unicode. One byte is equal
|
216
|
-
to one column. This implies --line-number.
|
217
|
-
|
218
|
-
This flag can be disabled with --no-column.
|
219
|
-
|
220
|
-
-C, --context <NUM>
|
221
|
-
Show NUM lines before and after each match. This is equivalent to providing
|
222
|
-
both the -B/--before-context and -A/--after-context flags with the same value.
|
223
|
-
|
224
|
-
This overrides both the -B/--before-context and -A/--after-context flags,
|
225
|
-
in addition to the --passthru flag.
|
226
|
-
|
227
|
-
--context-separator <SEPARATOR>
|
228
|
-
The string used to separate non-contiguous context lines in the output. This
|
229
|
-
is only used when one of the context flags is used (-A, -B or -C). Escape
|
230
|
-
sequences like \x7F or \t may be used. The default value is --.
|
231
|
-
|
232
|
-
When the context separator is set to an empty string, then a line break
|
233
|
-
is still inserted. To completely disable context separators, use the
|
234
|
-
--no-context-separator flag.
|
235
|
-
|
236
|
-
-c, --count
|
237
|
-
This flag suppresses normal output and shows the number of lines that match
|
238
|
-
the given patterns for each file searched. Each file containing a match has its
|
239
|
-
path and count printed on each line. Note that this reports the number of lines
|
240
|
-
that match and not the total number of matches, unless -U/--multiline is
|
241
|
-
enabled. In multiline mode, --count is equivalent to --count-matches.
|
242
|
-
|
243
|
-
If only one file is given to ripgrep, then only the count is printed if there
|
244
|
-
is a match. The --with-filename flag can be used to force printing the file
|
245
|
-
path in this case. If you need a count to be printed regardless of whether
|
246
|
-
there is a match, then use --include-zero.
|
247
|
-
|
248
|
-
This overrides the --count-matches flag. Note that when --count is combined
|
249
|
-
with --only-matching, then ripgrep behaves as if --count-matches was given.
|
250
|
-
|
251
|
-
--count-matches
|
252
|
-
This flag suppresses normal output and shows the number of individual
|
253
|
-
matches of the given patterns for each file searched. Each file
|
254
|
-
containing matches has its path and match count printed on each line.
|
255
|
-
Note that this reports the total number of individual matches and not
|
256
|
-
the number of lines that match.
|
257
|
-
|
258
|
-
If only one file is given to ripgrep, then only the count is printed if there
|
259
|
-
is a match. The --with-filename flag can be used to force printing the file
|
260
|
-
path in this case.
|
261
|
-
|
262
|
-
This overrides the --count flag. Note that when --count is combined with
|
263
|
-
--only-matching, then ripgrep behaves as if --count-matches was given.
|
264
|
-
|
265
|
-
--crlf
|
266
|
-
When enabled, ripgrep will treat CRLF ('\r\n') as a line terminator instead
|
267
|
-
of just '\n'.
|
268
|
-
|
269
|
-
Principally, this permits '$' in regex patterns to match just before CRLF
|
270
|
-
instead of just before LF. The underlying regex engine may not support this
|
271
|
-
natively, so ripgrep will translate all instances of '$' to '(?:\r??$)'. This
|
272
|
-
may produce slightly different than desired match offsets. It is intended as a
|
273
|
-
work-around until the regex engine supports this natively.
|
274
|
-
|
275
|
-
CRLF support can be disabled with --no-crlf.
|
276
|
-
|
277
|
-
--debug
|
278
|
-
Show debug messages. Please use this when filing a bug report.
|
279
|
-
|
280
|
-
The --debug flag is generally useful for figuring out why ripgrep skipped
|
281
|
-
searching a particular file. The debug messages should mention all files
|
282
|
-
skipped and why they were skipped.
|
283
|
-
|
284
|
-
To get even more debug output, use the --trace flag, which implies --debug
|
285
|
-
along with additional trace data. With --trace, the output could be quite
|
286
|
-
large and is generally more useful for development.
|
287
|
-
|
288
|
-
--dfa-size-limit <NUM+SUFFIX?>
|
289
|
-
The upper size limit of the regex DFA. The default limit is 10M. This should
|
290
|
-
only be changed on very large regex inputs where the (slower) fallback regex
|
291
|
-
engine may otherwise be used if the limit is reached.
|
292
|
-
|
293
|
-
The argument accepts the same size suffixes as allowed in with the
|
294
|
-
--max-filesize flag.
|
295
|
-
|
296
|
-
-E, --encoding <ENCODING>
|
297
|
-
Specify the text encoding that ripgrep will use on all files searched. The
|
298
|
-
default value is 'auto', which will cause ripgrep to do a best effort automatic
|
299
|
-
detection of encoding on a per-file basis. Automatic detection in this case
|
300
|
-
only applies to files that begin with a UTF-8 or UTF-16 byte-order mark (BOM).
|
301
|
-
No other automatic detection is performed. One can also specify 'none' which
|
302
|
-
will then completely disable BOM sniffing and always result in searching the
|
303
|
-
raw bytes, including a BOM if it's present, regardless of its encoding.
|
304
|
-
|
305
|
-
Other supported values can be found in the list of labels here:
|
306
|
-
https://encoding.spec.whatwg.org/#concept-encoding-get
|
307
|
-
|
308
|
-
For more details on encoding and how ripgrep deals with it, see GUIDE.md.
|
309
|
-
|
310
|
-
This flag can be disabled with --no-encoding.
|
311
|
-
|
312
|
-
--engine <ENGINE>
|
313
|
-
Specify which regular expression engine to use. When you choose a regex engine,
|
314
|
-
it applies that choice for every regex provided to ripgrep (e.g., via multiple
|
315
|
-
-e/--regexp or -f/--file flags).
|
316
|
-
|
317
|
-
Accepted values are 'default', 'pcre2', or 'auto'.
|
318
|
-
|
319
|
-
The default value is 'default', which is the fastest and should be good for
|
320
|
-
most use cases. The 'pcre2' engine is generally useful when you want to use
|
321
|
-
features such as look-around or backreferences. 'auto' will dynamically choose
|
322
|
-
between supported regex engines depending on the features used in a pattern on
|
323
|
-
a best effort basis.
|
324
|
-
|
325
|
-
Note that the 'pcre2' engine is an optional ripgrep feature. If PCRE2 wasn't
|
326
|
-
included in your build of ripgrep, then using this flag will result in ripgrep
|
327
|
-
printing an error message and exiting.
|
328
|
-
|
329
|
-
This overrides previous uses of --pcre2 and --auto-hybrid-regex flags.
|
330
|
-
[default: default]
|
331
|
-
--field-context-separator <SEPARATOR>
|
332
|
-
Set the field context separator, which is used to delimit file paths, line
|
333
|
-
numbers, columns and the context itself, when printing contextual lines. The
|
334
|
-
separator may be any number of bytes, including zero. Escape sequences like
|
335
|
-
\x7F or \t may be used. The default value is -.
|
336
|
-
|
337
|
-
--field-match-separator <SEPARATOR>
|
338
|
-
Set the field match separator, which is used to delimit file paths, line
|
339
|
-
numbers, columns and the match itself. The separator may be any number of
|
340
|
-
bytes, including zero. Escape sequences like \x7F or \t may be used. The
|
341
|
-
default value is -.
|
342
|
-
|
343
|
-
-f, --file <PATTERNFILE>...
|
344
|
-
Search for patterns from the given file, with one pattern per line. When this
|
345
|
-
flag is used multiple times or in combination with the -e/--regexp flag,
|
346
|
-
then all patterns provided are searched. Empty pattern lines will match all
|
347
|
-
input lines, and the newline is not counted as part of the pattern.
|
348
|
-
|
349
|
-
A line is printed if and only if it matches at least one of the patterns.
|
350
|
-
|
351
|
-
--files
|
352
|
-
Print each file that would be searched without actually performing the search.
|
353
|
-
This is useful to determine whether a particular file is being searched or not.
|
354
|
-
|
355
|
-
-l, --files-with-matches
|
356
|
-
Print the paths with at least one match and suppress match contents.
|
357
|
-
|
358
|
-
This overrides --files-without-match.
|
359
|
-
|
360
|
-
--files-without-match
|
361
|
-
Print the paths that contain zero matches and suppress match contents. This
|
362
|
-
inverts/negates the --files-with-matches flag.
|
363
|
-
|
364
|
-
This overrides --files-with-matches.
|
365
|
-
|
366
|
-
-F, --fixed-strings
|
367
|
-
Treat the pattern as a literal string instead of a regular expression. When
|
368
|
-
this flag is used, special regular expression meta characters such as .(){}*+
|
369
|
-
do not need to be escaped.
|
370
|
-
|
371
|
-
This flag can be disabled with --no-fixed-strings.
|
372
|
-
|
373
|
-
-L, --follow
|
374
|
-
When this flag is enabled, ripgrep will follow symbolic links while traversing
|
375
|
-
directories. This is disabled by default. Note that ripgrep will check for
|
376
|
-
symbolic link loops and report errors if it finds one.
|
377
|
-
|
378
|
-
This flag can be disabled with --no-follow.
|
379
|
-
|
380
|
-
-g, --glob <GLOB>...
|
381
|
-
Include or exclude files and directories for searching that match the given
|
382
|
-
glob. This always overrides any other ignore logic. Multiple glob flags may be
|
383
|
-
used. Globbing rules match .gitignore globs. Precede a glob with a ! to exclude
|
384
|
-
it. If multiple globs match a file or directory, the glob given later in the
|
385
|
-
command line takes precedence.
|
386
|
-
|
387
|
-
As an extension, globs support specifying alternatives: *-g ab{c,d}* is
|
388
|
-
equivalet to *-g abc -g abd*. Empty alternatives like *-g ab{,c}* are not
|
389
|
-
currently supported. Note that this syntax extension is also currently enabled
|
390
|
-
in gitignore files, even though this syntax isn't supported by git itself.
|
391
|
-
ripgrep may disable this syntax extension in gitignore files, but it will
|
392
|
-
always remain available via the -g/--glob flag.
|
393
|
-
|
394
|
-
When this flag is set, every file and directory is applied to it to test for
|
395
|
-
a match. So for example, if you only want to search in a particular directory
|
396
|
-
'foo', then *-g foo* is incorrect because 'foo/bar' does not match the glob
|
397
|
-
'foo'. Instead, you should use *-g 'foo/**'*.
|
398
|
-
|
399
|
-
--glob-case-insensitive
|
400
|
-
Process glob patterns given with the -g/--glob flag case insensitively. This
|
401
|
-
effectively treats --glob as --iglob.
|
402
|
-
|
403
|
-
This flag can be disabled with the --no-glob-case-insensitive flag.
|
404
|
-
|
405
|
-
-h, --help
|
406
|
-
Prints help information. Use --help for more details.
|
407
|
-
|
408
|
-
--heading
|
409
|
-
This flag prints the file path above clusters of matches from each file instead
|
410
|
-
of printing the file path as a prefix for each matched line. This is the
|
411
|
-
default mode when printing to a terminal.
|
412
|
-
|
413
|
-
This overrides the --no-heading flag.
|
414
|
-
|
415
|
-
-., --hidden
|
416
|
-
Search hidden files and directories. By default, hidden files and directories
|
417
|
-
are skipped. Note that if a hidden file or a directory is whitelisted in an
|
418
|
-
ignore file, then it will be searched even if this flag isn't provided.
|
419
|
-
|
420
|
-
A file or directory is considered hidden if its base name starts with a dot
|
421
|
-
character ('.'). On operating systems which support a `hidden` file attribute,
|
422
|
-
like Windows, files with this attribute are also considered hidden.
|
423
|
-
|
424
|
-
This flag can be disabled with --no-hidden.
|
425
|
-
|
426
|
-
--iglob <GLOB>...
|
427
|
-
Include or exclude files and directories for searching that match the given
|
428
|
-
glob. This always overrides any other ignore logic. Multiple glob flags may be
|
429
|
-
used. Globbing rules match .gitignore globs. Precede a glob with a ! to exclude
|
430
|
-
it. Globs are matched case insensitively.
|
431
|
-
|
432
|
-
-i, --ignore-case
|
433
|
-
When this flag is provided, the given patterns will be searched case
|
434
|
-
insensitively. The case insensitivity rules used by ripgrep conform to
|
435
|
-
Unicode's "simple" case folding rules.
|
436
|
-
|
437
|
-
This flag overrides -s/--case-sensitive and -S/--smart-case.
|
438
|
-
|
439
|
-
--ignore-file <PATH>...
|
440
|
-
Specifies a path to one or more .gitignore format rules files. These patterns
|
441
|
-
are applied after the patterns found in .gitignore and .ignore are applied
|
442
|
-
and are matched relative to the current working directory. Multiple additional
|
443
|
-
ignore files can be specified by using the --ignore-file flag several times.
|
444
|
-
When specifying multiple ignore files, earlier files have lower precedence
|
445
|
-
than later files.
|
446
|
-
|
447
|
-
If you are looking for a way to include or exclude files and directories
|
448
|
-
directly on the command line, then used -g instead.
|
449
|
-
|
450
|
-
--ignore-file-case-insensitive
|
451
|
-
Process ignore files (.gitignore, .ignore, etc.) case insensitively. Note that
|
452
|
-
this comes with a performance penalty and is most useful on case insensitive
|
453
|
-
file systems (such as Windows).
|
454
|
-
|
455
|
-
This flag can be disabled with the --no-ignore-file-case-insensitive flag.
|
456
|
-
|
457
|
-
--include-zero
|
458
|
-
When used with --count or --count-matches, print the number of matches for
|
459
|
-
each file even if there were zero matches. This is disabled by default but can
|
460
|
-
be enabled to make ripgrep behave more like grep.
|
461
|
-
|
462
|
-
-v, --invert-match
|
463
|
-
Invert matching. Show lines that do not match the given patterns.
|
464
|
-
|
465
|
-
--json
|
466
|
-
Enable printing results in a JSON Lines format.
|
467
|
-
|
468
|
-
When this flag is provided, ripgrep will emit a sequence of messages, each
|
469
|
-
encoded as a JSON object, where there are five different message types:
|
470
|
-
|
471
|
-
**begin** - A message that indicates a file is being searched and contains at
|
472
|
-
least one match.
|
473
|
-
|
474
|
-
**end** - A message the indicates a file is done being searched. This message
|
475
|
-
also include summary statistics about the search for a particular file.
|
476
|
-
|
477
|
-
**match** - A message that indicates a match was found. This includes the text
|
478
|
-
and offsets of the match.
|
479
|
-
|
480
|
-
**context** - A message that indicates a contextual line was found. This
|
481
|
-
includes the text of the line, along with any match information if the search
|
482
|
-
was inverted.
|
483
|
-
|
484
|
-
**summary** - The final message emitted by ripgrep that contains summary
|
485
|
-
statistics about the search across all files.
|
486
|
-
|
487
|
-
Since file paths or the contents of files are not guaranteed to be valid UTF-8
|
488
|
-
and JSON itself must be representable by a Unicode encoding, ripgrep will emit
|
489
|
-
all data elements as objects with one of two keys: 'text' or 'bytes'. 'text' is
|
490
|
-
a normal JSON string when the data is valid UTF-8 while 'bytes' is the base64
|
491
|
-
encoded contents of the data.
|
492
|
-
|
493
|
-
The JSON Lines format is only supported for showing search results. It cannot
|
494
|
-
be used with other flags that emit other types of output, such as --files,
|
495
|
-
--files-with-matches, --files-without-match, --count or --count-matches.
|
496
|
-
ripgrep will report an error if any of the aforementioned flags are used in
|
497
|
-
concert with --json.
|
498
|
-
|
499
|
-
Other flags that control aspects of the standard output such as
|
500
|
-
--only-matching, --heading, --replace, --max-columns, etc., have no effect
|
501
|
-
when --json is set.
|
502
|
-
|
503
|
-
A more complete description of the JSON format used can be found here:
|
504
|
-
https://docs.rs/grep-printer/*/grep_printer/struct.JSON.html
|
505
|
-
|
506
|
-
The JSON Lines format can be disabled with --no-json.
|
507
|
-
|
508
|
-
--line-buffered
|
509
|
-
When enabled, ripgrep will use line buffering. That is, whenever a matching
|
510
|
-
line is found, it will be flushed to stdout immediately. This is the default
|
511
|
-
when ripgrep's stdout is connected to a terminal, but otherwise, ripgrep will
|
512
|
-
use block buffering, which is typically faster. This flag forces ripgrep to
|
513
|
-
use line buffering even if it would otherwise use block buffering. This is
|
514
|
-
typically useful in shell pipelines, e.g.,
|
515
|
-
'tail -f something.log | rg foo --line-buffered | rg bar'.
|
516
|
-
|
517
|
-
Forceful line buffering can be disabled with --no-line-buffered. Note that
|
518
|
-
using --no-line-buffered causes ripgrep to revert to its default behavior of
|
519
|
-
automatically detecting the buffering strategy. To force block buffering, use
|
520
|
-
the --block-buffered flag.
|
521
|
-
|
522
|
-
-n, --line-number
|
523
|
-
Show line numbers (1-based). This is enabled by default when searching in a
|
524
|
-
terminal.
|
525
|
-
|
526
|
-
-x, --line-regexp
|
527
|
-
Only show matches surrounded by line boundaries. This is equivalent to putting
|
528
|
-
^...$ around all of the search patterns. In other words, this only prints lines
|
529
|
-
where the entire line participates in a match.
|
530
|
-
|
531
|
-
This overrides the --word-regexp flag.
|
532
|
-
|
533
|
-
-M, --max-columns <NUM>
|
534
|
-
Don't print lines longer than this limit in bytes. Longer lines are omitted,
|
535
|
-
and only the number of matches in that line is printed.
|
536
|
-
|
537
|
-
When this flag is omitted or is set to 0, then it has no effect.
|
538
|
-
|
539
|
-
--max-columns-preview
|
540
|
-
When the '--max-columns' flag is used, ripgrep will by default completely
|
541
|
-
replace any line that is too long with a message indicating that a matching
|
542
|
-
line was removed. When this flag is combined with '--max-columns', a preview
|
543
|
-
of the line (corresponding to the limit size) is shown instead, where the part
|
544
|
-
of the line exceeding the limit is not shown.
|
545
|
-
|
546
|
-
If the '--max-columns' flag is not set, then this has no effect.
|
547
|
-
|
548
|
-
This flag can be disabled with '--no-max-columns-preview'.
|
549
|
-
|
550
|
-
-m, --max-count <NUM>
|
551
|
-
Limit the number of matching lines per file searched to NUM.
|
552
|
-
|
553
|
-
--max-depth <NUM>
|
554
|
-
Limit the depth of directory traversal to NUM levels beyond the paths given. A
|
555
|
-
value of zero only searches the explicitly given paths themselves.
|
556
|
-
|
557
|
-
For example, 'rg --max-depth 0 dir/' is a no-op because dir/ will not be
|
558
|
-
descended into. 'rg --max-depth 1 dir/' will search only the direct children of
|
559
|
-
'dir'.
|
560
|
-
|
561
|
-
--max-filesize <NUM+SUFFIX?>
|
562
|
-
Ignore files larger than NUM in size. This does not apply to directories.
|
563
|
-
|
564
|
-
The input format accepts suffixes of K, M or G which correspond to kilobytes,
|
565
|
-
megabytes and gigabytes, respectively. If no suffix is provided the input is
|
566
|
-
treated as bytes.
|
567
|
-
|
568
|
-
Examples: --max-filesize 50K or --max-filesize 80M
|
569
|
-
|
570
|
-
--mmap
|
571
|
-
Search using memory maps when possible. This is enabled by default when ripgrep
|
572
|
-
thinks it will be faster.
|
573
|
-
|
574
|
-
Memory map searching doesn't currently support all options, so if an
|
575
|
-
incompatible option (e.g., --context) is given with --mmap, then memory maps
|
576
|
-
will not be used.
|
577
|
-
|
578
|
-
Note that ripgrep may abort unexpectedly when --mmap if it searches a file that
|
579
|
-
is simultaneously truncated.
|
580
|
-
|
581
|
-
This flag overrides --no-mmap.
|
582
|
-
|
583
|
-
-U, --multiline
|
584
|
-
Enable matching across multiple lines.
|
585
|
-
|
586
|
-
When multiline mode is enabled, ripgrep will lift the restriction that a match
|
587
|
-
cannot include a line terminator. For example, when multiline mode is not
|
588
|
-
enabled (the default), then the regex '\p{any}' will match any Unicode
|
589
|
-
codepoint other than '\n'. Similarly, the regex '\n' is explicitly forbidden,
|
590
|
-
and if you try to use it, ripgrep will return an error. However, when multiline
|
591
|
-
mode is enabled, '\p{any}' will match any Unicode codepoint, including '\n',
|
592
|
-
and regexes like '\n' are permitted.
|
593
|
-
|
594
|
-
An important caveat is that multiline mode does not change the match semantics
|
595
|
-
of '.'. Namely, in most regex matchers, a '.' will by default match any
|
596
|
-
character other than '\n', and this is true in ripgrep as well. In order to
|
597
|
-
make '.' match '\n', you must enable the "dot all" flag inside the regex.
|
598
|
-
For example, both '(?s).' and '(?s:.)' have the same semantics, where '.' will
|
599
|
-
match any character, including '\n'. Alternatively, the '--multiline-dotall'
|
600
|
-
flag may be passed to make the "dot all" behavior the default. This flag only
|
601
|
-
applies when multiline search is enabled.
|
602
|
-
|
603
|
-
There is no limit on the number of the lines that a single match can span.
|
604
|
-
|
605
|
-
**WARNING**: Because of how the underlying regex engine works, multiline
|
606
|
-
searches may be slower than normal line-oriented searches, and they may also
|
607
|
-
use more memory. In particular, when multiline mode is enabled, ripgrep
|
608
|
-
requires that each file it searches is laid out contiguously in memory
|
609
|
-
(either by reading it onto the heap or by memory-mapping it). Things that
|
610
|
-
cannot be memory-mapped (such as stdin) will be consumed until EOF before
|
611
|
-
searching can begin. In general, ripgrep will only do these things when
|
612
|
-
necessary. Specifically, if the --multiline flag is provided but the regex
|
613
|
-
does not contain patterns that would match '\n' characters, then ripgrep
|
614
|
-
will automatically avoid reading each file into memory before searching it.
|
615
|
-
Nevertheless, if you only care about matches spanning at most one line, then it
|
616
|
-
is always better to disable multiline mode.
|
617
|
-
|
618
|
-
This flag can be disabled with --no-multiline.
|
619
|
-
|
620
|
-
--multiline-dotall
|
621
|
-
This flag enables "dot all" in your regex pattern, which causes '.' to match
|
622
|
-
newlines when multiline searching is enabled. This flag has no effect if
|
623
|
-
multiline searching isn't enabled with the --multiline flag.
|
624
|
-
|
625
|
-
Normally, a '.' will match any character except newlines. While this behavior
|
626
|
-
typically isn't relevant for line-oriented matching (since matches can span at
|
627
|
-
most one line), this can be useful when searching with the -U/--multiline flag.
|
628
|
-
By default, the multiline mode runs without this flag.
|
629
|
-
|
630
|
-
This flag is generally intended to be used in an alias or your ripgrep config
|
631
|
-
file if you prefer "dot all" semantics by default. Note that regardless of
|
632
|
-
whether this flag is used, "dot all" semantics can still be controlled via
|
633
|
-
inline flags in the regex pattern itself, e.g., '(?s:.)' always enables "dot
|
634
|
-
all" whereas '(?-s:.)' always disables "dot all".
|
635
|
-
|
636
|
-
This flag can be disabled with --no-multiline-dotall.
|
637
|
-
|
638
|
-
--no-config
|
639
|
-
Never read configuration files. When this flag is present, ripgrep will not
|
640
|
-
respect the RIPGREP_CONFIG_PATH environment variable.
|
641
|
-
|
642
|
-
If ripgrep ever grows a feature to automatically read configuration files in
|
643
|
-
pre-defined locations, then this flag will also disable that behavior as well.
|
644
|
-
|
645
|
-
-I, --no-filename
|
646
|
-
Never print the file path with the matched lines. This is the default when
|
647
|
-
ripgrep is explicitly instructed to search one file or stdin.
|
648
|
-
|
649
|
-
This flag overrides --with-filename.
|
650
|
-
|
651
|
-
--no-heading
|
652
|
-
Don't group matches by each file. If --no-heading is provided in addition to
|
653
|
-
the -H/--with-filename flag, then file paths will be printed as a prefix for
|
654
|
-
every matched line. This is the default mode when not printing to a terminal.
|
655
|
-
|
656
|
-
This overrides the --heading flag.
|
657
|
-
|
658
|
-
--no-ignore
|
659
|
-
Don't respect ignore files (.gitignore, .ignore, etc.). This implies
|
660
|
-
--no-ignore-dot, --no-ignore-exclude, --no-ignore-global, no-ignore-parent and
|
661
|
-
--no-ignore-vcs.
|
662
|
-
|
663
|
-
This does *not* imply --no-ignore-files, since --ignore-file is specified
|
664
|
-
explicitly as a command line argument.
|
665
|
-
|
666
|
-
When given only once, the -u flag is identical in behavior to --no-ignore and
|
667
|
-
can be considered an alias. However, subsequent -u flags have additional
|
668
|
-
effects; see --unrestricted.
|
669
|
-
|
670
|
-
This flag can be disabled with the --ignore flag.
|
671
|
-
|
672
|
-
--no-ignore-dot
|
673
|
-
Don't respect .ignore files.
|
674
|
-
|
675
|
-
This does *not* affect whether ripgrep will ignore files and directories
|
676
|
-
whose names begin with a dot. For that, see the -./--hidden flag.
|
677
|
-
|
678
|
-
This flag can be disabled with the --ignore-dot flag.
|
679
|
-
|
680
|
-
--no-ignore-exclude
|
681
|
-
Don't respect ignore files that are manually configured for the repository
|
682
|
-
such as git's '.git/info/exclude'.
|
683
|
-
|
684
|
-
This flag can be disabled with the --ignore-exclude flag.
|
685
|
-
|
686
|
-
--no-ignore-files
|
687
|
-
When set, any --ignore-file flags, even ones that come after this flag, are
|
688
|
-
ignored.
|
689
|
-
|
690
|
-
This flag can be disabled with the --ignore-files flag.
|
691
|
-
|
692
|
-
--no-ignore-global
|
693
|
-
Don't respect ignore files that come from "global" sources such as git's
|
694
|
-
`core.excludesFile` configuration option (which defaults to
|
695
|
-
`$HOME/.config/git/ignore`).
|
696
|
-
|
697
|
-
This flag can be disabled with the --ignore-global flag.
|
698
|
-
|
699
|
-
--no-ignore-messages
|
700
|
-
Suppresses all error messages related to parsing ignore files such as .ignore
|
701
|
-
or .gitignore.
|
702
|
-
|
703
|
-
This flag can be disabled with the --ignore-messages flag.
|
704
|
-
|
705
|
-
--no-ignore-parent
|
706
|
-
Don't respect ignore files (.gitignore, .ignore, etc.) in parent directories.
|
707
|
-
|
708
|
-
This flag can be disabled with the --ignore-parent flag.
|
709
|
-
|
710
|
-
--no-ignore-vcs
|
711
|
-
Don't respect version control ignore files (.gitignore, etc.). This implies
|
712
|
-
--no-ignore-parent for VCS files. Note that .ignore files will continue to be
|
713
|
-
respected.
|
714
|
-
|
715
|
-
This flag can be disabled with the --ignore-vcs flag.
|
716
|
-
|
717
|
-
-N, --no-line-number
|
718
|
-
Suppress line numbers. This is enabled by default when not searching in a
|
719
|
-
terminal.
|
720
|
-
|
721
|
-
--no-messages
|
722
|
-
Suppress all error messages related to opening and reading files. Error
|
723
|
-
messages related to the syntax of the pattern given are still shown.
|
724
|
-
|
725
|
-
This flag can be disabled with the --messages flag.
|
726
|
-
|
727
|
-
--no-mmap
|
728
|
-
Never use memory maps, even when they might be faster.
|
729
|
-
|
730
|
-
This flag overrides --mmap.
|
731
|
-
|
732
|
-
--no-pcre2-unicode
|
733
|
-
DEPRECATED. Use --no-unicode instead.
|
734
|
-
|
735
|
-
This flag is now an alias for --no-unicode. And --pcre2-unicode is an alias
|
736
|
-
for --unicode.
|
737
|
-
|
738
|
-
--no-require-git
|
739
|
-
By default, ripgrep will only respect global gitignore rules, .gitignore rules
|
740
|
-
and local exclude rules if ripgrep detects that you are searching inside a
|
741
|
-
git repository. This flag allows you to relax this restriction such that
|
742
|
-
ripgrep will respect all git related ignore rules regardless of whether you're
|
743
|
-
searching in a git repository or not.
|
744
|
-
|
745
|
-
This flag can be disabled with --require-git.
|
746
|
-
|
747
|
-
--no-unicode
|
748
|
-
By default, ripgrep will enable "Unicode mode" in all of its regexes. This
|
749
|
-
has a number of consequences:
|
750
|
-
|
751
|
-
* '.' will only match valid UTF-8 encoded scalar values.
|
752
|
-
* Classes like '\w', '\s', '\d' are all Unicode aware and much bigger
|
753
|
-
than their ASCII only versions.
|
754
|
-
* Case insensitive matching will use Unicode case folding.
|
755
|
-
* A large array of classes like '\p{Emoji}' are available.
|
756
|
-
* Word boundaries ('\b' and '\B') use the Unicode definition of a word
|
757
|
-
character.
|
758
|
-
|
759
|
-
In some cases it can be desirable to turn these things off. The --no-unicode
|
760
|
-
flag will do exactly that.
|
761
|
-
|
762
|
-
For PCRE2 specifically, Unicode mode represents a critical trade off in the
|
763
|
-
user experience of ripgrep. In particular, unlike the default regex engine,
|
764
|
-
PCRE2 does not support the ability to search possibly invalid UTF-8 with
|
765
|
-
Unicode features enabled. Instead, PCRE2 *requires* that everything it searches
|
766
|
-
when Unicode mode is enabled is valid UTF-8. (Or valid UTF-16/UTF-32, but for
|
767
|
-
the purposes of ripgrep, we only discuss UTF-8.) This means that if you have
|
768
|
-
PCRE2's Unicode mode enabled and you attempt to search invalid UTF-8, then
|
769
|
-
the search for that file will halt and print an error. For this reason, when
|
770
|
-
PCRE2's Unicode mode is enabled, ripgrep will automatically "fix" invalid
|
771
|
-
UTF-8 sequences by replacing them with the Unicode replacement codepoint. This
|
772
|
-
penalty does not occur when using the default regex engine.
|
773
|
-
|
774
|
-
If you would rather see the encoding errors surfaced by PCRE2 when Unicode mode
|
775
|
-
is enabled, then pass the --no-encoding flag to disable all transcoding.
|
776
|
-
|
777
|
-
The --no-unicode flag can be disabled with --unicode. Note that
|
778
|
-
--no-pcre2-unicode and --pcre2-unicode are aliases for --no-unicode and
|
779
|
-
--unicode, respectively.
|
780
|
-
|
781
|
-
-0, --null
|
782
|
-
Whenever a file path is printed, follow it with a NUL byte. This includes
|
783
|
-
printing file paths before matches, and when printing a list of matching files
|
784
|
-
such as with --count, --files-with-matches and --files. This option is useful
|
785
|
-
for use with xargs.
|
786
|
-
|
787
|
-
--null-data
|
788
|
-
Enabling this option causes ripgrep to use NUL as a line terminator instead of
|
789
|
-
the default of '\n'.
|
790
|
-
|
791
|
-
This is useful when searching large binary files that would otherwise have very
|
792
|
-
long lines if '\n' were used as the line terminator. In particular, ripgrep
|
793
|
-
requires that, at a minimum, each line must fit into memory. Using NUL instead
|
794
|
-
can be a useful stopgap to keep memory requirements low and avoid OOM (out of
|
795
|
-
memory) conditions.
|
796
|
-
|
797
|
-
This is also useful for processing NUL delimited data, such as that emitted
|
798
|
-
when using ripgrep's -0/--null flag or find's --print0 flag.
|
799
|
-
|
800
|
-
Using this flag implies -a/--text.
|
801
|
-
|
802
|
-
--one-file-system
|
803
|
-
When enabled, ripgrep will not cross file system boundaries relative to where
|
804
|
-
the search started from.
|
805
|
-
|
806
|
-
Note that this applies to each path argument given to ripgrep. For example, in
|
807
|
-
the command 'rg --one-file-system /foo/bar /quux/baz', ripgrep will search both
|
808
|
-
'/foo/bar' and '/quux/baz' even if they are on different file systems, but will
|
809
|
-
not cross a file system boundary when traversing each path's directory tree.
|
810
|
-
|
811
|
-
This is similar to find's '-xdev' or '-mount' flag.
|
812
|
-
|
813
|
-
This flag can be disabled with --no-one-file-system.
|
814
|
-
|
815
|
-
-o, --only-matching
|
816
|
-
Print only the matched (non-empty) parts of a matching line, with each such
|
817
|
-
part on a separate output line.
|
818
|
-
|
819
|
-
--passthru
|
820
|
-
Print both matching and non-matching lines.
|
821
|
-
|
822
|
-
Another way to achieve a similar effect is by modifying your pattern to match
|
823
|
-
the empty string. For example, if you are searching using 'rg foo' then using
|
824
|
-
'rg "^|foo"' instead will emit every line in every file searched, but only
|
825
|
-
occurrences of 'foo' will be highlighted. This flag enables the same behavior
|
826
|
-
without needing to modify the pattern.
|
827
|
-
|
828
|
-
This overrides the --context, --after-context and --before-context flags.
|
829
|
-
|
830
|
-
--path-separator <SEPARATOR>
|
831
|
-
Set the path separator to use when printing file paths. This defaults to your
|
832
|
-
platform's path separator, which is / on Unix and \ on Windows. This flag is
|
833
|
-
intended for overriding the default when the environment demands it (e.g.,
|
834
|
-
cygwin). A path separator is limited to a single byte.
|
835
|
-
|
836
|
-
-P, --pcre2
|
837
|
-
When this flag is present, ripgrep will use the PCRE2 regex engine instead of
|
838
|
-
its default regex engine.
|
839
|
-
|
840
|
-
This is generally useful when you want to use features such as look-around
|
841
|
-
or backreferences.
|
842
|
-
|
843
|
-
Note that PCRE2 is an optional ripgrep feature. If PCRE2 wasn't included in
|
844
|
-
your build of ripgrep, then using this flag will result in ripgrep printing
|
845
|
-
an error message and exiting. PCRE2 may also have worse user experience in
|
846
|
-
some cases, since it has fewer introspection APIs than ripgrep's default regex
|
847
|
-
engine. For example, if you use a '\n' in a PCRE2 regex without the
|
848
|
-
'-U/--multiline' flag, then ripgrep will silently fail to match anything
|
849
|
-
instead of reporting an error immediately (like it does with the default
|
850
|
-
regex engine).
|
851
|
-
|
852
|
-
Related flags: --no-pcre2-unicode
|
853
|
-
|
854
|
-
This flag can be disabled with --no-pcre2.
|
855
|
-
|
856
|
-
--pcre2-version
|
857
|
-
When this flag is present, ripgrep will print the version of PCRE2 in use,
|
858
|
-
along with other information, and then exit. If PCRE2 is not available, then
|
859
|
-
ripgrep will print an error message and exit with an error code.
|
860
|
-
|
861
|
-
--pre <COMMAND>
|
862
|
-
For each input FILE, search the standard output of COMMAND FILE rather than the
|
863
|
-
contents of FILE. This option expects the COMMAND program to either be an
|
864
|
-
absolute path or to be available in your PATH. Either an empty string COMMAND
|
865
|
-
or the '--no-pre' flag will disable this behavior.
|
866
|
-
|
867
|
-
WARNING: When this flag is set, ripgrep will unconditionally spawn a
|
868
|
-
process for every file that is searched. Therefore, this can incur an
|
869
|
-
unnecessarily large performance penalty if you don't otherwise need the
|
870
|
-
flexibility offered by this flag. One possible mitigation to this is to use
|
871
|
-
the '--pre-glob' flag to limit which files a preprocessor is run with.
|
872
|
-
|
873
|
-
A preprocessor is not run when ripgrep is searching stdin.
|
874
|
-
|
875
|
-
When searching over sets of files that may require one of several decoders
|
876
|
-
as preprocessors, COMMAND should be a wrapper program or script which first
|
877
|
-
classifies FILE based on magic numbers/content or based on the FILE name and
|
878
|
-
then dispatches to an appropriate preprocessor. Each COMMAND also has its
|
879
|
-
standard input connected to FILE for convenience.
|
880
|
-
|
881
|
-
For example, a shell script for COMMAND might look like:
|
882
|
-
|
883
|
-
case "$1" in
|
884
|
-
*.pdf)
|
885
|
-
exec pdftotext "$1" -
|
886
|
-
;;
|
887
|
-
*)
|
888
|
-
case $(file "$1") in
|
889
|
-
*Zstandard*)
|
890
|
-
exec pzstd -cdq
|
891
|
-
;;
|
892
|
-
*)
|
893
|
-
exec cat
|
894
|
-
;;
|
895
|
-
esac
|
896
|
-
;;
|
897
|
-
esac
|
898
|
-
|
899
|
-
The above script uses `pdftotext` to convert a PDF file to plain text. For
|
900
|
-
all other files, the script uses the `file` utility to sniff the type of the
|
901
|
-
file based on its contents. If it is a compressed file in the Zstandard format,
|
902
|
-
then `pzstd` is used to decompress the contents to stdout.
|
903
|
-
|
904
|
-
This overrides the -z/--search-zip flag.
|
905
|
-
|
906
|
-
--pre-glob <GLOB>...
|
907
|
-
This flag works in conjunction with the --pre flag. Namely, when one or more
|
908
|
-
--pre-glob flags are given, then only files that match the given set of globs
|
909
|
-
will be handed to the command specified by the --pre flag. Any non-matching
|
910
|
-
files will be searched without using the preprocessor command.
|
911
|
-
|
912
|
-
This flag is useful when searching many files with the --pre flag. Namely,
|
913
|
-
it permits the ability to avoid process overhead for files that don't need
|
914
|
-
preprocessing. For example, given the following shell script, 'pre-pdftotext':
|
915
|
-
|
916
|
-
#!/bin/sh
|
917
|
-
|
918
|
-
pdftotext "$1" -
|
919
|
-
|
920
|
-
then it is possible to use '--pre pre-pdftotext --pre-glob '*.pdf'' to make
|
921
|
-
it so ripgrep only executes the 'pre-pdftotext' command on files with a '.pdf'
|
922
|
-
extension.
|
923
|
-
|
924
|
-
Multiple --pre-glob flags may be used. Globbing rules match .gitignore globs.
|
925
|
-
Precede a glob with a ! to exclude it.
|
926
|
-
|
927
|
-
This flag has no effect if the --pre flag is not used.
|
928
|
-
|
929
|
-
-p, --pretty
|
930
|
-
This is a convenience alias for '--color always --heading --line-number'. This
|
931
|
-
flag is useful when you still want pretty output even if you're piping ripgrep
|
932
|
-
to another program or file. For example: 'rg -p foo | less -R'.
|
933
|
-
|
934
|
-
-q, --quiet
|
935
|
-
Do not print anything to stdout. If a match is found in a file, then ripgrep
|
936
|
-
will stop searching. This is useful when ripgrep is used only for its exit
|
937
|
-
code (which will be an error if no matches are found).
|
938
|
-
|
939
|
-
When --files is used, then ripgrep will stop finding files after finding the
|
940
|
-
first file that matches all ignore rules.
|
941
|
-
|
942
|
-
--regex-size-limit <NUM+SUFFIX?>
|
943
|
-
The upper size limit of the compiled regex. The default limit is 10M.
|
944
|
-
|
945
|
-
The argument accepts the same size suffixes as allowed in the --max-filesize
|
946
|
-
flag.
|
947
|
-
|
948
|
-
-e, --regexp <PATTERN>...
|
949
|
-
A pattern to search for. This option can be provided multiple times, where
|
950
|
-
all patterns given are searched. Lines matching at least one of the provided
|
951
|
-
patterns are printed. This flag can also be used when searching for patterns
|
952
|
-
that start with a dash.
|
953
|
-
|
954
|
-
For example, to search for the literal '-foo', you can use this flag:
|
955
|
-
|
956
|
-
rg -e -foo
|
957
|
-
|
958
|
-
You can also use the special '--' delimiter to indicate that no more flags
|
959
|
-
will be provided. Namely, the following is equivalent to the above:
|
960
|
-
|
961
|
-
rg -- -foo
|
962
|
-
|
963
|
-
-r, --replace <REPLACEMENT_TEXT>
|
964
|
-
Replace every match with the text given when printing results. Neither this
|
965
|
-
flag nor any other ripgrep flag will modify your files.
|
966
|
-
|
967
|
-
Capture group indices (e.g., $5) and names (e.g., $foo) are supported in the
|
968
|
-
replacement string. Capture group indices are numbered based on the position of
|
969
|
-
the opening parenthesis of the group, where the leftmost such group is $1. The
|
970
|
-
special $0 group corresponds to the entire match.
|
971
|
-
|
972
|
-
In shells such as Bash and zsh, you should wrap the pattern in single quotes
|
973
|
-
instead of double quotes. Otherwise, capture group indices will be replaced by
|
974
|
-
expanded shell variables which will most likely be empty.
|
975
|
-
|
976
|
-
To write a literal '$', use '$$'.
|
977
|
-
|
978
|
-
Note that the replacement by default replaces each match, and NOT the entire
|
979
|
-
line. To replace the entire line, you should match the entire line.
|
980
|
-
|
981
|
-
This flag can be used with the -o/--only-matching flag.
|
982
|
-
|
983
|
-
-z, --search-zip
|
984
|
-
Search in compressed files. Currently gzip, bzip2, xz, LZ4, LZMA, Brotli and
|
985
|
-
Zstd files are supported. This option expects the decompression binaries to be
|
986
|
-
available in your PATH.
|
987
|
-
|
988
|
-
This flag can be disabled with --no-search-zip.
|
989
|
-
|
990
|
-
-S, --smart-case
|
991
|
-
Searches case insensitively if the pattern is all lowercase. Search case
|
992
|
-
sensitively otherwise.
|
993
|
-
|
994
|
-
A pattern is considered all lowercase if both of the following rules hold:
|
995
|
-
|
996
|
-
First, the pattern contains at least one literal character. For example, 'a\w'
|
997
|
-
contains a literal ('a') but just '\w' does not.
|
998
|
-
|
999
|
-
Second, of the literals in the pattern, none of them are considered to be
|
1000
|
-
uppercase according to Unicode. For example, 'foo\pL' has no uppercase
|
1001
|
-
literals but 'Foo\pL' does.
|
1002
|
-
|
1003
|
-
This overrides the -s/--case-sensitive and -i/--ignore-case flags.
|
1004
|
-
|
1005
|
-
--sort <SORTBY>
|
1006
|
-
This flag enables sorting of results in ascending order. The possible values
|
1007
|
-
for this flag are:
|
1008
|
-
|
1009
|
-
none (Default) Do not sort results. Fastest. Can be multi-threaded.
|
1010
|
-
path Sort by file path. Always single-threaded.
|
1011
|
-
modified Sort by the last modified time on a file. Always single-threaded.
|
1012
|
-
accessed Sort by the last accessed time on a file. Always single-threaded.
|
1013
|
-
created Sort by the creation time on a file. Always single-threaded.
|
1014
|
-
|
1015
|
-
If the chosen (manually or by-default) sorting criteria isn't available on your
|
1016
|
-
system (for example, creation time is not available on ext4 file systems), then
|
1017
|
-
ripgrep will attempt to detect this, print an error and exit without searching.
|
1018
|
-
|
1019
|
-
To sort results in reverse or descending order, use the --sortr flag. Also,
|
1020
|
-
this flag overrides --sortr.
|
1021
|
-
|
1022
|
-
Note that sorting results currently always forces ripgrep to abandon
|
1023
|
-
parallelism and run in a single thread.
|
1024
|
-
|
1025
|
-
--sortr <SORTBY>
|
1026
|
-
This flag enables sorting of results in descending order. The possible values
|
1027
|
-
for this flag are:
|
1028
|
-
|
1029
|
-
none (Default) Do not sort results. Fastest. Can be multi-threaded.
|
1030
|
-
path Sort by file path. Always single-threaded.
|
1031
|
-
modified Sort by the last modified time on a file. Always single-threaded.
|
1032
|
-
accessed Sort by the last accessed time on a file. Always single-threaded.
|
1033
|
-
created Sort by the creation time on a file. Always single-threaded.
|
1034
|
-
|
1035
|
-
If the chosen (manually or by-default) sorting criteria isn't available on your
|
1036
|
-
system (for example, creation time is not available on ext4 file systems), then
|
1037
|
-
ripgrep will attempt to detect this, print an error and exit without searching.
|
1038
|
-
|
1039
|
-
To sort results in ascending order, use the --sort flag. Also, this flag
|
1040
|
-
overrides --sort.
|
1041
|
-
|
1042
|
-
Note that sorting results currently always forces ripgrep to abandon
|
1043
|
-
parallelism and run in a single thread.
|
1044
|
-
|
1045
|
-
--stats
|
1046
|
-
Print aggregate statistics about this ripgrep search. When this flag is
|
1047
|
-
present, ripgrep will print the following stats to stdout at the end of the
|
1048
|
-
search: number of matched lines, number of files with matches, number of files
|
1049
|
-
searched, and the time taken for the entire search to complete.
|
1050
|
-
|
1051
|
-
This set of aggregate statistics may expand over time.
|
1052
|
-
|
1053
|
-
Note that this flag has no effect if --files, --files-with-matches or
|
1054
|
-
--files-without-match is passed.
|
1055
|
-
|
1056
|
-
This flag can be disabled with --no-stats.
|
1057
|
-
|
1058
|
-
-a, --text
|
1059
|
-
Search binary files as if they were text. When this flag is present, ripgrep's
|
1060
|
-
binary file detection is disabled. This means that when a binary file is
|
1061
|
-
searched, its contents may be printed if there is a match. This may cause
|
1062
|
-
escape codes to be printed that alter the behavior of your terminal.
|
1063
|
-
|
1064
|
-
When binary file detection is enabled it is imperfect. In general, it uses
|
1065
|
-
a simple heuristic. If a NUL byte is seen during search, then the file is
|
1066
|
-
considered binary and search stops (unless this flag is present).
|
1067
|
-
Alternatively, if the '--binary' flag is used, then ripgrep will only quit
|
1068
|
-
when it sees a NUL byte after it sees a match (or searches the entire file).
|
1069
|
-
|
1070
|
-
This flag can be disabled with '--no-text'. It overrides the '--binary' flag.
|
1071
|
-
|
1072
|
-
-j, --threads <NUM>
|
1073
|
-
The approximate number of threads to use. A value of 0 (which is the default)
|
1074
|
-
causes ripgrep to choose the thread count using heuristics.
|
1075
|
-
|
1076
|
-
--trim
|
1077
|
-
When set, all ASCII whitespace at the beginning of each line printed will be
|
1078
|
-
trimmed.
|
1079
|
-
|
1080
|
-
This flag can be disabled with --no-trim.
|
1081
|
-
|
1082
|
-
-t, --type <TYPE>...
|
1083
|
-
Only search files matching TYPE. Multiple type flags may be provided. Use the
|
1084
|
-
--type-list flag to list all available types.
|
1085
|
-
|
1086
|
-
This flag supports the special value 'all', which will behave as if --type
|
1087
|
-
was provided for every file type supported by ripgrep (including any custom
|
1088
|
-
file types). The end result is that '--type all' causes ripgrep to search in
|
1089
|
-
"whitelist" mode, where it will only search files it recognizes via its type
|
1090
|
-
definitions.
|
1091
|
-
|
1092
|
-
--type-add <TYPE_SPEC>...
|
1093
|
-
Add a new glob for a particular file type. Only one glob can be added at a
|
1094
|
-
time. Multiple --type-add flags can be provided. Unless --type-clear is used,
|
1095
|
-
globs are added to any existing globs defined inside of ripgrep.
|
1096
|
-
|
1097
|
-
Note that this MUST be passed to every invocation of ripgrep. Type settings are
|
1098
|
-
NOT persisted. See CONFIGURATION FILES for a workaround.
|
1099
|
-
|
1100
|
-
Example:
|
1101
|
-
|
1102
|
-
rg --type-add 'foo:*.foo' -tfoo PATTERN.
|
1103
|
-
|
1104
|
-
--type-add can also be used to include rules from other types with the special
|
1105
|
-
include directive. The include directive permits specifying one or more other
|
1106
|
-
type names (separated by a comma) that have been defined and its rules will
|
1107
|
-
automatically be imported into the type specified. For example, to create a
|
1108
|
-
type called src that matches C++, Python and Markdown files, one can use:
|
1109
|
-
|
1110
|
-
--type-add 'src:include:cpp,py,md'
|
1111
|
-
|
1112
|
-
Additional glob rules can still be added to the src type by using the
|
1113
|
-
--type-add flag again:
|
1114
|
-
|
1115
|
-
--type-add 'src:include:cpp,py,md' --type-add 'src:*.foo'
|
1116
|
-
|
1117
|
-
Note that type names must consist only of Unicode letters or numbers.
|
1118
|
-
Punctuation characters are not allowed.
|
1119
|
-
|
1120
|
-
--type-clear <TYPE>...
|
1121
|
-
Clear the file type globs previously defined for TYPE. This only clears the
|
1122
|
-
default type definitions that are found inside of ripgrep.
|
1123
|
-
|
1124
|
-
Note that this MUST be passed to every invocation of ripgrep. Type settings are
|
1125
|
-
NOT persisted. See CONFIGURATION FILES for a workaround.
|
1126
|
-
|
1127
|
-
--type-list
|
1128
|
-
Show all supported file types and their corresponding globs.
|
1129
|
-
|
1130
|
-
-T, --type-not <TYPE>...
|
1131
|
-
Do not search files matching TYPE. Multiple type-not flags may be provided. Use
|
1132
|
-
the --type-list flag to list all available types.
|
1133
|
-
|
1134
|
-
-u, --unrestricted
|
1135
|
-
Reduce the level of "smart" searching. A single -u won't respect .gitignore
|
1136
|
-
(etc.) files (--no-ignore). Two -u flags will additionally search hidden files
|
1137
|
-
and directories (-./--hidden). Three -u flags will additionally search binary
|
1138
|
-
files (--binary).
|
1139
|
-
|
1140
|
-
'rg -uuu' is roughly equivalent to 'grep -r'.
|
1141
|
-
|
1142
|
-
-V, --version
|
1143
|
-
Prints version information
|
1144
|
-
|
1145
|
-
--vimgrep
|
1146
|
-
Show results with every match on its own line, including line numbers and
|
1147
|
-
column numbers. With this option, a line with more than one match will be
|
1148
|
-
printed more than once.
|
1149
|
-
|
1150
|
-
-H, --with-filename
|
1151
|
-
Display the file path for matches. This is the default when more than one
|
1152
|
-
file is searched. If --heading is enabled (the default when printing to a
|
1153
|
-
terminal), the file path will be shown above clusters of matches from each
|
1154
|
-
file; otherwise, the file name will be shown as a prefix for each matched line.
|
1155
|
-
|
1156
|
-
This flag overrides --no-filename.
|
1157
|
-
|
1158
|
-
-w, --word-regexp
|
1159
|
-
Only show matches surrounded by word boundaries. This is roughly equivalent to
|
1160
|
-
putting \b before and after all of the search patterns.
|
1161
|
-
|
1162
|
-
This overrides the --line-regexp flag.
|
1163
|
-
|