在 zsh 完成中调用自定义函数?
Invoke custom function in zsh completion?
我似乎无法找到调用 zsh 完成函数的方法,我可以利用该函数并提供可用项目的 return 结果。例如,我希望能够调用 Web 服务并 return 返回一组电位。
我试过这样的事情:
#compdef test
local arguments
_run(){
reply=(1 2 3)
}
arguments=(
'--test[foo]:bar:_run'
)
_arguments -s $arguments
如果我在 _run
函数中添加回显,我可以看到它正在执行,但 zsh 总是说没有匹配项
我花了一些时间才弄明白(只是因为我从 brew
zsh 完成文件中偷走了它:
#compdef test
local arguments
_run(){
val=(1 2 3)
_wanted val expl "Items" compadd -a val
}
_biz(){
val=(4 5 6)
_wanted val expl "Biz" compadd -a val
}
local expl
local -a val
arguments=(
'--test[foo]:bar:_run'
'--biz[boo]:boo:_biz'
)
_arguments $arguments
现在你可以
$ test --test
-- Items --
1 2 3
和
$ test --test 2 --biz 4
-- Biz --
4 5 6
我似乎无法找到调用 zsh 完成函数的方法,我可以利用该函数并提供可用项目的 return 结果。例如,我希望能够调用 Web 服务并 return 返回一组电位。
我试过这样的事情:
#compdef test
local arguments
_run(){
reply=(1 2 3)
}
arguments=(
'--test[foo]:bar:_run'
)
_arguments -s $arguments
如果我在 _run
函数中添加回显,我可以看到它正在执行,但 zsh 总是说没有匹配项
我花了一些时间才弄明白(只是因为我从 brew
zsh 完成文件中偷走了它:
#compdef test
local arguments
_run(){
val=(1 2 3)
_wanted val expl "Items" compadd -a val
}
_biz(){
val=(4 5 6)
_wanted val expl "Biz" compadd -a val
}
local expl
local -a val
arguments=(
'--test[foo]:bar:_run'
'--biz[boo]:boo:_biz'
)
_arguments $arguments
现在你可以
$ test --test
-- Items --
1 2 3
和
$ test --test 2 --biz 4
-- Biz --
4 5 6