如何使用 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
我有以下命令在命令行中模糊查找文件并在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