6

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

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

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

rg . | fzf --print0 -e

vscode_console_ripgrep_fzf_string_search.png

但现在使用此命令在 VSCode 中打开文件不再起作用:

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

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

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

4

1 回答 1

2

选择--vimgrep返回rg医生订购的内容。这就是我在您输入的 vscode 扩展问题请求中使用的内容:

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

它返回如下数据:

$ 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
于 2020-05-13T11:12:29.287 回答