Как нечетко найти все файлы, содержащие определенный текст, с помощью ripgrep и fzf и открыть их VSCode
У меня есть следующая команда для нечеткого поиска файлов в командной строке и открытия выбранного файла в VSCode:
fzf --print0 -e | xargs -0 -r code
Теперь я хочу иметь возможность искать строку в содержимом файла. Я могу найти искомую строку в командной строке:
rg . | fzf --print0 -e
но теперь уже не работает открыть файл в VSCode с помощью этой команды:
rg . | fzf --print0 -e | xargs -0 -r code
потому что в VSCode передается имя файла, которое содержит само имя файла и строку поиска, которая, конечно же, является пустым файлом.
Как я могу объединить две вышеуказанные команды, чтобы передать имя файла в VSCode, который содержит искомую строку?
1 ответ
В --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