Как нечетко найти все файлы, содержащие определенный текст, с помощью 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
Другие вопросы по тегам