ripgrep recursively searches directories for a regex pattern while respecting your gitignore
This is a minor release with a few small new features and bug fixes. This
release contains a bug fix for unbounded memory growth while walking a
directory tree. This release also includes improvements to the completions for
the fish
shell, and release binaries for several additional ARM targets.
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
Bug fixes:
ignore
crate.Feature enhancements:
fish
shell.armv7-unknown-linux-gnueabihf
,
armv7-unknown-linux-musleabihf
and armv7-unknown-linux-musleabi
.This is a patch release with a few small bug fixes.
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
Bug fixes:
--sortr=path
. I left a todo!()
in the source. Oof.This is a patch release with a few small bug fixes.
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
Bug fixes:
This a patch release meant to fix cargo install ripgrep
on Windows.
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
Bug fixes:
pkg/windows/Manifest.xml
in crate package.ripgrep 14 is a new major version release of ripgrep that has some new features, performance improvements and a lot of bug fixes.
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
The headlining feature in this release is hyperlink support. In this release,
they are an opt-in feature but may change to an opt-out feature in the future.
To enable them, try passing --hyperlink-format default
. If you use VS Code,
then try passing --hyperlink-format vscode
. Please report your experience
with hyperlinks, positive or negative.
Another headlining development in this release is that it contains a rewrite of its regex engine. You generally shouldn't notice any changes, except for some searches may get faster. You can read more about the regex engine rewrite on my blog. Please report your performance improvements or regressions that you notice.
Finally, ripgrep switched the library it uses for argument parsing. Users
should not notice a difference in most cases (error messages have changed
somewhat), but flag overrides should generally be more consistent. For example,
things like --no-ignore --ignore-vcs
work as one would expect (disables all
filtering related to ignore rules except for rules found in version control
systems such as git
).
BREAKING CHANGES:
rg -C1 -A2
used to be equivalent to rg -A2
, but now it is equivalent to
rg -B1 -A2
. That is, -A
and -B
no longer completely override -C
.
Instead, they only partially override -C
.Build process changes:
--generate
flag. For example, rg --generate man
will write a
man page in roff
format on stdout. The release archives have not changed.asciidoc
or asciidoctor
has been
dropped. Previously, it was used to produce ripgrep's man page. ripgrep now
owns this process itself by writing roff
directly.Performance improvements:
\b
look-arounds (among others) much faster.Feature enhancements:
--hyperlink-format
flag that turns file paths into hyperlinks.--stop-on-nonmatch
flag.-h/--help
output and ripgrep's man page.extra-verbose
mode is enabled in zsh, show extra file type info.cargo binstall
.winget
.rg --generate
.--debug
flag now indicates whether stdin or ./
is being searched.-d
a short flag for --max-depth
.--version
output will now also contain PCRE2 availability information.Bug fixes:
-v/--invert-match
is used multiple times.\b
assertion in the regex engine.--no-ignore --ignore-vcs
now works as one would expect.-z/--search-zip
documentation.-M 900
, would fail.-w
with a regex that can match the empty string.--pre
can accept any kind of path in the documentation.-r/--replace
syntax.--no-ignore-dot
would not ignore .rgignore
.-r/--replace
flag.-A
and -B
now only each partially override -C
.\/
resulted in an error.--sort
flag for values other than path
.--debug
logs when binary files are ignored.--stats
is always implied by --json
.-p/--pretty
override flags like --no-line-number
.excludesFile
field.--sort=path
.--trim
run before -M/--max-columns
takes effect..ignore
/.rgignore
files in parent directories.-e/--regexp
.--vimgrep
by mentioning footguns and some work-arounds.--field-match-separator
..com
into account on Windows.-w/--word-regexp
that would result in incorrect match offsets.-w/--word-regexp
flag.ripgrep 13 is a new major version release of ripgrep that primarily contains bug fixes, some performance improvements and a few minor breaking changes. There is also a fix for a security vulnerability on Windows (CVE-2021-3013).
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
Some highlights:
A new short flag, -.
, has been added. It is an alias for the --hidden
flag,
which instructs ripgrep to search hidden files and directories.
ripgrep is now using a new
vectorized implementation of memmem
,
which accelerates many common searches. If you notice any performance
regressions (or major improvements), I'd love to hear about them through an
issue report!
Also, for Windows users targeting MSVC, Cargo will now build fully static executables of ripgrep. The release binaries for ripgrep 13 have been compiled using this configuration.
BREAKING CHANGES:
Binary detection output has changed slightly.
In this release, a small tweak has been made to the output format when a binary file is detected. Previously, it looked like this:
Binary file FOO matches (found "\0" byte around offset XXX)
Now it looks like this:
FOO: binary file matches (found "\0" byte around offset XXX)
vimgrep output in multi-line now only prints the first line for each match.
See issue 1866 for more discussion on this. Previously, every line in a match was duplicated, even when it spanned multiple lines. There are no changes to vimgrep output when multi-line mode is disabled.
In multi-line mode, --count is now equivalent to --count-matches.
This appears to match how pcre2grep
implements --count
. Previously, ripgrep
would produce outright incorrect counts. Another alternative would be to simply
count the number of lines---even if it's more than the number of matches---but
that seems highly unintuitive.
FULL LIST OF FIXES AND IMPROVEMENTS:
Security fixes:
-z/--search-zip
or --pre
flags can result in running arbitrary
executables from the current directory.Performance improvements:
memmem
.Feature enhancements:
-.
as a short flag alias for --hidden
.--field-{context,match}-separator
for customizing field delimiters.Bug fixes:
\n
didn't work as expected.-o/--only-matching
.-m
and -A
printed more matches than the limit.-u/--unrestricted
.-S/--smart-case
works.foo/**
would match foo
, but it shouldn't.--crlf
is used in some cases.{a,b,..}
.--hidden
flag works.--vimgrep
mode.--passthru
and -A/-B/-C
did not override each other.--files-with-matches
and --files-without-match
.\A
could produce unanchored matches in multiline search.--vimgrep
is used with -U/--multiline
.ripgrep 12.1.1 is a patch release that fixes a couple small bugs. In
particular, the ripgrep 12.1.0 release did not tag new releases for all of its
in-tree dependencies. As a result, ripgrep built dependencies from crates.io
would produce a different build than compiling ripgrep from source on the
12.1.0
tag. Namely, some crates like grep-cli
had unreleased changes.
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches your current directory for a regex pattern. By default, ripgrep will respect your gitignore rules and automatically skip hidden files/directories and binary files.
Bug fixes:
ripgrep 12.1.0 is a small minor version release that mostly includes bug fixes and documentation improvements. This release also contains some important notices for downstream packagers.
In case you haven't heard of it before, ripgrep is a line-oriented search
tool that recursively searches your current directory for a regex pattern. By
default, ripgrep will respect your .gitignore
and automatically skip hidden
files/directories and binary files.
Notices for downstream ripgrep package maintainers:
a2x
to asciidoctor
to generate the man page.
If asciidoctor
is not present, then ripgrep will currently fall back to
a2x
. Support for a2x
will be dropped in the ripgrep 13 release.
See #1544
for more details.Feature enhancements:
.Z
files via uncompress
.Bug fixes:
--pre
flag to the GUIDE.$
when using --replace
.asciidoctor
instead of a2x
to generate its man page.--type-{add,clear}
docs.--count-matches
output when using look-around.ripgrep 12.0.1 is a small patch release that includes a minor bug fix relating to superfluous error messages when searching git repositories with sub-modules. This was a regression introduced in the 12.0.0 release.
In case you haven't heard of it before, ripgrep is a line-oriented search
tool that recursively searches your current directory for a regex pattern. By
default, ripgrep will respect your .gitignore
and automatically skip hidden
files/directories and binary files.
Bug fixes:
ripgrep 12 is a new major version release of ripgrep that contains many bug fixes, several important performance improvements and a few minor new features.
In case you haven't heard of it before, ripgrep is a line-oriented search
tool that recursively searches your current directory for a regex pattern. By
default, ripgrep will respect your .gitignore
and automatically skip hidden
files/directories and binary files.
In a near future release, I am hoping to add an indexing feature to ripgrep, which will dramatically speed up searching by building an index. Feedback would very much be appreciated, especially on the user experience which will be difficult to get right.
This release has no known breaking changes.
Deprecations:
--no-pcre2-unicode
flag is deprecated. Instead, use the --no-unicode
flag, which applies to both the default regex engine and PCRE2. For now,
--no-pcre2-unicode
and --pcre2-unicode
are aliases to --no-unicode
and --unicode
, respectively. The --[no-]pcre2-unicode
flags may be
removed in a future release.--auto-hybrid-regex
flag is deprecated. Instead, use the new --engine
flag with the auto
value.Performance improvements:
+Sherlock Holmes +
now has Sherlock Holmes
extracted instead
of
.-w/--word-regexp
flag is used.-w/--word-regexp
flag.Feature enhancements:
--include-zero
flag that shows files searched without matches.--no-context-separator
flag that always hides context separators.--no-require-git
flag to allow ripgrep to respect gitignores anywhere.--no-ignore-exclude
to disregard rules in .git/info/exclude
files.--no-ignore-files
flag to disable all --ignore-file
flags.--no-unicode
flag. This works on all supported regex engines.Bug fixes:
--type all
.-g/--glob
flag./usr/share/fish/vendor_completions.d/rg.fish
.