如何使用 ripgrep 和 fzf 模糊查找包含特定文本的所有文件并将其打开 VSCode

How do I fuzzy find all files containing specific text using ripgrep and fzf and open it VSCode

我有以下命令在命令行中模糊查找文件并在VSCode中打开所选文件:

fzf --print0 -e | xargs -0 -r code

现在我还希望能够在文件内容中搜索字符串。我能够在命令行中找到搜索到的字符串:

rg . | fzf --print0 -e

但现在无法再使用此命令打开 VSCode 中的文件:

rg . | fzf --print0 -e | xargs -0 -r code

因为向 VSCode 传递了一个文件名,其中包含文件名本身和搜索字符串,这当然是一个空文件。

如何结合以上两个命令将文件名传递给包含搜索字符串的 VSCode?

rg returns 的 --vimgrep 选项正是医生所要求的。这就是我在您提出的 vscode 扩展问题请求中使用的内容:

https://github.com/rlivings39/vscode-fzf-quick-open/commit/101a6d8e44b707d11e661ca10aaf37102373c644

它returns数据像:

$ rg --vimgrep
extension.ts:5:5:let fzfTerminal: vscode.Terminal | undefined = undefined;
extension.ts:6:5:let fzfTerminalPwd: vscode.Terminal | undefined = undefined;

然后就可以把前3个字段剪下来传给code -g:

rg --vimgrep --color ansi | fzf --ansi --print0 | cut -z -d : -f 1-3 | xargs -0 -r code -g