如何使用 ripgrep/fzf 列出匹配搜索的源文件名

aaa*_*aaa 2 fuzzy-search fzf

问题

我需要搜索文本文件的目录,其中也搜索文件的内容。我目前正在使用 ripgrep 和 fzf 来执行此操作 - 问题是每个文件的每一行都会输出搜索。我需要每个搜索匹配项也指示其源文件名/文件路径。

例子:

我们有以下两个文件:

示例.md

某事 某事 foo 某事

某事 某事 foo 某事

某事 某事 foo 某事

某事 某事 foo 某事

有用的例子.md

某事 某事 foo 某事

我们rg . | fzf在包含它们的目录中运行,写入 foo,并得到以下结果:

有用的示例.md:某事某事foo某事

example.md:某事某事foo某事

example.md:某事某事foo某事

example.md:某事某事foo某事

example.md:某事某事foo某事

这里的问题是 example.md 的每一行都是一个搜索结果。它应该是引用其文件的匹配项。它应该看起来像这样:

有用的示例.md:某事某事foo某事

example.md:某事某事foo某事

…………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………

Kol*_*lja 5

Ripgrep 带有一个--heading标志(来自手册页)

在每个文件的匹配簇上方打印文件路径,而不是将文件路径打印为每个匹配行的前缀

它看起来像这样:

rg --heading --line-number --column . | fzf --layout=reverse

useful-example.txt
1:1:something something foo something

example.txt
1:1:something something foo something
2:1:something something foo something
3:1:something something foo something
4:1:something something foo something
Run Code Online (Sandbox Code Playgroud)

如果您只对匹配的文件感兴趣,请添加标志--files-with-matches

rg --files-with-matches . | fzf
useful-example.txt
example.txt
Run Code Online (Sandbox Code Playgroud)