我正在尝试以下列方式使用 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]}"
这样做的原因是预览确实在找到字符串的行显示了文件,但是当我循环浏览其他模糊找到的建议时它不会更新。