You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Makefile通配符目标的Tab自动补全

实现Makefile通配符目标的Tab自动补全

没问题,我来帮你搞定Makefile里这些通配符目标的Tab自动补全!针对bash和zsh这两种最常用的shell,我分别给你具体的实现方案:

针对Bash Shell

你可以通过编写自定义补全函数,让bash识别出abcd_defconfig这类衍生目标。

  1. 首先创建补全函数
    在终端里输入以下代码(或者直接写到你的bash配置文件里):
_make_defconfig_completion() {
    # 获取当前输入的单词
    local cur=${COMP_WORDS[COMP_CWORD]}
    # 扫描当前目录下的所有.config文件,提取文件名前缀(去掉.config后缀)
    local config_prefixes=$(ls *.config 2>/dev/null | sed 's/\.config$//')
    # 生成对应的_defconfig目标列表
    local target_candidates=$(printf "%s_defconfig\n" $config_prefixes)
    # 根据当前输入过滤候选目标,返回给补全系统
    COMPREPLY=($(compgen -W "$target_candidates" -- "$cur"))
}
  1. 绑定补全函数到make命令
    执行这条命令让补全生效:
complete -F _make_defconfig_completion make
  1. 让补全永久生效
    如果希望每次打开终端都能使用这个补全,把上面的函数和complete命令添加到你的~/.bashrc或者~/.bash_profile文件末尾,然后执行source ~/.bashrc(或者对应的配置文件)让修改立即生效。

针对Zsh Shell

Zsh的补全系统更强大,实现起来同样简单:

  1. 创建补全函数
_make_defconfig_completion() {
    # 扫描当前目录下的.config文件,用:r后缀修饰符去掉.config扩展名
    local config_prefixes=(*.config(:r))
    # 生成候选目标,把前缀和_defconfig拼接
    _arguments '*:target:(${(j: :)config_prefixes}_defconfig)'
}
  1. 绑定补全函数到make命令
    执行这条命令激活补全:
compdef _make_defconfig_completion make
  1. 永久生效
    把上述函数和compdef命令添加到你的~/.zshrc文件末尾,执行source ~/.zshrc即可让设置永久生效。

额外说明

  • 如果你的.config文件不在当前工作目录,可以修改扫描路径(比如把*.config换成path/to/your/configs/*.config)
  • 测试的时候,输入make abcd然后按Tab,就应该能自动补全成make abcd_defconfig啦!

内容的提问来源于stack exchange,提问作者Anuraag Tummanapally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:27:41