Add*_*son 6 parameters bash autocomplete function
我正在尝试创建一个通用的自动完成函数(它实际上需要几个参数,并且有一堆共享逻辑),这样我就可以轻松而整齐地维护一长串类似的命令,并具有类似的自动完成功能(参数数量等) )。
我有一个 bash 函数,它带有一个参数(尽可能简化):
_autocomplete() {
COMPREPLY=( $(compgen -W "$1" -- "${COMP_WORDS[COMP_CWORD]}") )
return 0
}
Run Code Online (Sandbox Code Playgroud)
当我引用它时,使用以函数名称作为参数的命令,我还想向它传递一个参数以在函数中运行:
complete -F "_autocomplete example_param" some_function
Run Code Online (Sandbox Code Playgroud)
但是,当我点击选项卡时,这不起作用,而是出现以下错误:
some_function bash: completion: function `_autocomplete example_param' not found
Run Code Online (Sandbox Code Playgroud)
这是 的限制吗complete
?
有什么办法可以解决这个问题,或者有更好的方法吗?
谢谢。
该-F
选项后面应该只跟一个函数名称。如果要执行带有选项的命令,则需要使用-C
. 但该命令需要将完成结果打印到标准输出,而不是 set COMPREPLY
。因此将函数更改为:
_autocomplete() {
COMPREPLY=( $(compgen -W "$1" -- "${COMP_WORDS[COMP_CWORD]}") )
for reply in "${COMPREPLY[@]}"
do
printf '%s\n' "$reply"
done
return 0
}
complete -C "_autocomplete example_param" some_function
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
174 次 |
最近记录: |