如何为Shell脚本函数启用自动补全功能?
实现bash脚本内部函数的命令补全
bash默认不会自动识别脚本内部的函数作为参数补全选项,需手动配置补全规则来实现需求,具体操作如下:
1. 编写补全函数
创建一个生成补全候选的bash函数:
_commands_completion() { # 从目标脚本中提取所有函数名(适配`funcname() {`格式的定义) local funcs=$(awk '/^[a-zA-Z0-9_]+()/{print $1}' "$1" | sed 's/()//') COMPREPLY=($(compgen -W "$funcs" -- "${COMP_WORDS[COMP_CWORD]}")) }
2. 关联补全函数与脚本
执行以下命令,将补全函数绑定到commands.sh:
complete -F _commands_completion ./commands.sh
此时再输入./commands.sh fu<TAB>,就能自动补全为./commands.sh func1。
3. 永久生效配置
若希望每次终端启动都能使用该补全,将上述补全函数和complete命令添加到~/.bashrc或~/.bash_profile中,执行source ~/.bashrc即可生效。
内容的提问来源于stack exchange,提问作者YFl
相关产品推荐
相关产品推荐

