将 bash 转换为 fish 函数(在 fish 中使用 rga-fzf)
Converting bash to fish function (use rga-fzf in fish)
我正在尝试将此 bash/zsh 函数转换为鱼。我想使用 rga-fzf,它是 zsh/bash 的函数,将 fzf 与 ripgrep-all.
一起使用
(我的默认 shell 是鱼)
这是 zsh/fish 函数:
rga-fzf() {
RG_PREFIX="rga --files-with-matches"
local file
file="$(
FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
)" &&
echo "opening $file" &&
xdg-open "$file"
}
这是我自己完成的,并得到了 which helps - and this post 的帮助。
function fif
set RG_PREFIX rga --files-with-matches
set -l file
set file (
set FZF_DEFAULT_COMMAND $RG_PREFIX "" \
fzf --sort --preview test ! -z {} && rga --pretty --context 5 $argv {} \
--phony -q "" \
--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 "" \
--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 ''" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
) &&
open "$file"
end
现在它至少打开了 fzf 但它实际上并没有使用 rga 来过滤任何文档(fzf 打开文件夹中的所有可用文件)并且预览 window 显示:
fish: Unknown command: '[[ ! -z FILENAME ]]'
fish:
[[ ! -z 'FILENAME' ]] && rga --pretty --context 5 '' 'FILENAME'
FILENAME 类似于 Guidelines 2-2019.pdf
所以嗯更近了一步,但实际上并没有同时使用 rga
和 fzf
。
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/zsh 函数转换为鱼。我想使用 rga-fzf,它是 zsh/bash 的函数,将 fzf 与 ripgrep-all.
一起使用(我的默认 shell 是鱼)
这是 zsh/fish 函数:
rga-fzf() {
RG_PREFIX="rga --files-with-matches"
local file
file="$(
FZF_DEFAULT_COMMAND="$RG_PREFIX ''" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
)" &&
echo "opening $file" &&
xdg-open "$file"
}
这是我自己完成的,并得到了
function fif
set RG_PREFIX rga --files-with-matches
set -l file
set file (
set FZF_DEFAULT_COMMAND $RG_PREFIX "" \
fzf --sort --preview test ! -z {} && rga --pretty --context 5 $argv {} \
--phony -q "" \
--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 "" \
--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 ''" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
) &&
open "$file"
end
现在它至少打开了 fzf 但它实际上并没有使用 rga 来过滤任何文档(fzf 打开文件夹中的所有可用文件)并且预览 window 显示:
fish: Unknown command: '[[ ! -z FILENAME ]]'
fish:
[[ ! -z 'FILENAME' ]] && rga --pretty --context 5 '' 'FILENAME'
FILENAME 类似于 Guidelines 2-2019.pdf
所以嗯更近了一步,但实际上并没有同时使用 rga
和 fzf
。
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
这就是最终的效果!