1

问题

我需要模糊搜索文本文件的目录,其中也搜索文件的内容。我目前正在使用 ripgrep 和 fzf 来执行此操作,问题是每个文件的每一行都成为一个搜索项,我需要每个项目包含其文件的所有行。

例子:

我们有以下两个文件:

例子.md

某事某事

某事某事

某事某事

某事某事

有用的例子.md

某事某事

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

有用的例子.md:something something foo something

example.md:something something foo something

example.md:something something foo something

example.md:something something foo something

example.md:something something foo something

这里的问题是 example.md 的每一行都是一个项目,它应该是一个包含每个文件的项目。它应该看起来像这样:

有用的例子.md:something something foo something

example.md:something something foo something

......................某事某事

......................某事某事

......................某事某事

问题

我该怎么做呢?有人做过我想念的这个吗?

4

1 回答 1

2

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

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

rg --files-with-matches . | fzf
useful-example.txt
example.txt
于 2020-07-10T04:23:32.383 回答