【发布时间】:2019-06-02 03:18:18
【问题描述】:
我正在尝试以下列方式使用 fzf,我希望能够在我的代码库中搜索一个术语,然后通过预览窗口能够看到包含我正在搜索的字符串的文件 在找到字符串的那一行。
到目前为止,我已经设法通过管道对目录及以下所有文件进行 ripgrep 搜索,在代码库中模糊搜索各种术语。我已经使用 cut 来解析 cat 或 tail 的文件名以读取并打印到预览窗口。这是用于此的命令。
rg . -n | fzf --preview-"cut -d":" -f1 <<< {} | xargs cat"
注意 {} 表示的字符串格式如下:
myfile.c:72:The string I am fuzzy searching
我的问题是我无法同时解析文件名和行号。
我尝试在预览命令中传递 bashscript,并在以下示例中使用 $()。 (注意这里我使用tail和--lines+N参数来打印第N行之后的文件)
rg . -n | fzf --preview-"tail $(cut -d":" -f1 <<< {}) --lines=+$(cut -d":" -f2 <<< {})"
这不起作用,此尝试的各种变体也不起作用。感谢您提供任何帮助或反馈。
编辑(1):
我试过把它拆分成这样的数组
rg . -n | fzf --preview="IFS=":" read -r -a arr <<< {}| xargs tail ${arr[0]} --lines=+${arr[1]}"
这有效,因为预览确实在找到字符串的行显示文件,但是当我循环浏览其他模糊找到的建议时它不会更新。
【问题讨论】: