zsh完成:使用来自特定目录的路径,而不是当前路径

zsh完成:使用来自特定目录的路径,而不是当前路径,zsh,zsh-completion,Zsh,Zsh Completion,我有一个自定义函数,zsh为它提供了默认的制表符补全。 它完成当前工作目录中的路径。那太好了,但我想 类似于完成(仅针对此特定函数)来表现 有点不同:好像我总是在一个特定的目录中 这能用很少的工作来实现吗?我想要像这样的东西 compdef myfunc=“cd/my/dir” 要添加一些上下文,我的函数如下所示: play() { ( cd ~/Music/mp3 && do-sth $1 && open

我有一个自定义函数,zsh为它提供了默认的制表符补全。 它完成当前工作目录中的路径。那太好了,但我想 类似于完成(仅针对此特定函数)来表现 有点不同:好像我总是在一个特定的目录中

这能用很少的工作来实现吗?我想要像这样的东西
compdef myfunc=“cd/my/dir”

要添加一些上下文,我的函数如下所示:

play() {
    (
        cd ~/Music/mp3 &&
        do-sth $1 &&
        open -a itunes $1
    )
}
我希望能够做到以下几点:

$ ls ~/Music/mp3
Slayer
$ cd ~
$ play S<tab>  # expands to "Slayer"
$ls~/Music/mp3
杀手
$cd~
$play S#扩展为“Slayer”

我有一个类似的解决方案,可以将目录切换到我的代码项目。 像这样的事情可能对你有好处:

play() { open -a itunes ~/Music/mp3/$@; }
compctl -/ -W ~/Music/mp3 play