gpt4 book ai didi

fish - fish shell 自定义函数的自动完成文件

转载 作者:行者123 更新时间:2023-12-05 02:52:27 27 4
gpt4 key购买 nike

我正在从 ZSH 迁移到 Fish,我唯一没弄清楚的是我的 c功能:

函数/c:

#!/bin/sh
cd "$PROJECTS/$1"

函数/_c:

#compdef c
_files -W $PROJECTS -/

这在 ZSH 上运行良好,我可以输入 c <tab>它完成时就好像我在做 cd $PROJECTS直接。

在 fish 上,我创建了一个 c.fish像这样:

function c
cd $PROJECTS/$argv
end

complete --command c --no-files --arguments='(find $PROJECTS -mindepth 1 -maxdepth 2)'

但是你可以想象,它不能作为 ZSH 版本工作,因为补全不知道 $argv , 并且不会完成第一个文件夹。

有没有办法在 Fish 中做同样的事情?

我考虑过创建一个 abbr ,但我真的很喜欢我今天在 ZSH 上使用它的方式。

最佳答案

如果 c 应该像 cd 一样将 $PWD 设置为 $PROJECTS,这是一种方法:

function c_complete
# get the argument to 'c'
set arg (commandline -ct)

# save our PWD
set saved_pwd $PWD

# cd to $PROJECTS (and then back after)
# while in $PROJECTS, complete as if we are 'cd'
builtin cd $PROJECTS
and complete -C"cd $arg"
builtin cd $saved_pwd
end

complete --command c --arguments '(c_complete)'

关于fish - fish shell 自定义函数的自动完成文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62604692/

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