gpt4 book ai didi

bash - 将bash转换为fish函数(在fish中使用rga-fzf)

转载 作者:行者123 更新时间:2023-12-04 13:30:50 26 4
gpt4 key购买 nike

我正在尝试将此 bash/zsh 函数转换为 fish。我想使用 rga-fzf,它是 zsh/bash 的一个函数,将 fzf 与 ripgrep-all 一起使用.
(我的默认 shell 是 fish )
这是 zsh/fish 函数:

rga-fzf() {
RG_PREFIX="rga --files-with-matches"
local file
file="$(
FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "$1" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
)" &&
echo "opening $file" &&
xdg-open "$file"
}
这是我自己走了多远,在 this post 的帮助下这有帮助 - 和 this post .
function fif
set RG_PREFIX rga --files-with-matches
set -l file
set file (
set FZF_DEFAULT_COMMAND $RG_PREFIX "$1" \
fzf --sort --preview test ! -z {} && rga --pretty --context 5 $argv {} \
--phony -q "$1" \
--bind "change:reload:$RG_PREFIX $argv" \
--preview-window="70%:wrap"
) &&
open "$file"
end
但是,现在它只是打开(当前)文件夹和通知
error: Found argument '--phony' which wasn't expected, or isn't valid in this context
如果我将 $1 更改为 $argv,则没有变化。如果我将 $argv 更改为 "$argv"也没有变化
任何帮助将不胜感激!
编辑
如果我将线路改回:
            fzf --sort --preview "[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
然后错误消失了,但它仍然只打开文件夹而不是 fzf
编辑 2
我已经改回了 {q}所以现在它写着:
function fif
set RG_PREFIX rga --files-with-matches
set -l file
set file (
set FZF_DEFAULT_COMMAND $RG_PREFIX "$argv" \
fzf --sort --preview "[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "$1" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
) &&
open "$file"
end
错误消失了。
但问题仍然存在,它实际上并没有打开 fzf。
编辑 3
第一组我做错了。这不应该
set RG_PREFIX rga --files-with-matches 
set -x RG_PREFIX rga --files-with-matches
此外, fzf 之后 () 之间的所有内容都应保持不变
所以目前我在这里:
function fif
set -x RG_PREFIX rga --files-with-matches
set -l file
set file (
FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "$1" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
) &&
open "$file"
end
现在它至少打开了 fzf 但它实际上并没有使用 rga 来过滤任何文档(fzf 打开文件夹中的所有可用文件)并且预览窗口显示:
fish: Unknown command: '[[ ! -z FILENAME ]]' 
fish:
[[ ! -z 'FILENAME' ]] && rga --pretty --context 5 '' 'FILENAME'
其中 FILENAME 类似于指南 2-2019.pdf
所以嗯,更近了一步,但实际上并没有使用 rgafzf一起。

最佳答案

function fif
set -x RG_PREFIX rga --files-with-matches
set -l file
set file (
FZF_DEFAULT_COMMAND="$RG_PREFIX '$argv'" \
fzf --sort --preview="[ ! -z {} ] && rga --pretty --context 5 {q} {}" \
--phony -q "$argv" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
) &&
open "$file"
end
这就是最终奏效的方法!

关于bash - 将bash转换为fish函数(在fish中使用rga-fzf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65161536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com