gpt4 book ai didi

fish - 如何将 `ranger-cd` 函数移植到 fish shell

转载 作者:行者123 更新时间:2023-12-01 09:28:44 24 4
gpt4 key购买 nike

我一直在尝试为 ranger file manager 移植 ranger-cd 函数到fish shell .截至 2013 年,ranger 的 ranger-cd 函数如下所示:

function ranger-cd {
tempfile='/tmp/chosendir'
/usr/bin/ranger --choosedir="$tempfile" "${@:-$(pwd)}"
test -f "$tempfile" &&
if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
cd -- "$(cat "$tempfile")"
fi
rm -f -- "$tempfile"
}

# This binds Ctrl-O to ranger-cd:
bind '"\C-o":"ranger-cd\C-m"'

(这个函数给ranger文件管理器一个临时文件,用来存放上次访问的目录,以便在ranger退出后切换到那个目录。)

到目前为止,我为将函数移植到 fish 所做的工作如下:

function ranger-cd
set tempfile '/tmp/chosendir'
/usr/bin/ranger --choosedir=$tempfile (pwd)
test -f $tempfile and
if cat $tempfile != echo -n (pwd)
cd (cat $tempfile)
end
rm -f $tempfile
end

function fish_user_key_bindings
bind \co ranger-cd
end

当我使用这个功能时,我得到:

test: unexpected argument at index 2: 'and'
1 /home/gokcecat: !=: No such file or directory
cat: echo: No such file or directory
cat: /home/gokce: Is a directory

我猜上面的代码中仍然存在多个错误。有人对此有有效的解决方案吗?

最佳答案

我的回答是基于 gzfrancisco 的。但是,我修复了“'-a' at index 2”问题,并且我还确保在退出 ranger 后打印新的提示。

我在~/.config/fish/config.fish中加入了以下内容:

function ranger-cd                                                               

set tempfile '/tmp/chosendir'
ranger --choosedir=$tempfile (pwd)

if test -f $tempfile
if [ (cat $tempfile) != (pwd) ]
cd (cat $tempfile)
end
end

rm -f $tempfile

end

function fish_user_key_bindings
bind \co 'ranger-cd ; commandline -f repaint'
end

关于fish - 如何将 `ranger-cd` 函数移植到 fish shell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807813/

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