gpt4 book ai didi

terminal - 基于 2 个参数的 Zsh 自动完成功能

转载 作者:行者123 更新时间:2023-12-04 17:54:32 24 4
gpt4 key购买 nike

我有一个这样的功能:

p() { cd ~/Clients/$1/Projects/$2; }

然后我可以输入:
p "Client here" "Project here"

它需要我:
~/Clients/Client here/Projects/Project here

这里没什么特别的。但是我如何为这个功能实现自动完成?我设法为第一个参数(客户端)获得自动完成工作:
_p() { _files -W ~/Clients -/; }
compdef _p p

但是如何自动完成第二个参数(项目)?它需要根据客户端从文件夹中自动完成:
~/Clients/$1/Projects

希望有人能帮忙! :-)

最佳答案

IRC 上的一个聪明人 (Mikachu) 提供了帮助:

p() { cd ~/Clients/$1/Projects/$2; }
_p() {
_arguments '1: :->client' '2: :->project'
case $state in
client)
_files -W ~/Clients
;;
project)
_files -W ~/Clients/$words[CURRENT-1]/Projects
;;
esac
}
compdef _p p

更新:将 $words[CURRENT-1] 更改为 ${(Q)words[CURRENT-1]} 以使其适用于包含空格的目录:
p() { cd ~/Clients/$1/Projects/$2; }
_p() {
_arguments '1: :->client' '2: :->project'
case $state in
client)
_files -W ~/Clients
;;
project)
_files -W ~/Clients/${(Q)words[CURRENT-1]}/Projects
;;
esac
}
compdef _p p

关于terminal - 基于 2 个参数的 Zsh 自动完成功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700012/

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