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

zsh compctl补全对含连字符的命令名不生效的问题求助

zsh compctl补全对含连字符的命令名不生效的问题求助

我从90年代末/2000年初就一直在用zsh的compctl,说起来也奇怪,之前从来没碰到过这种问题。

今天我本来想给update-alternatives配置compctl补全规则,结果发现设置好的补全完全没触发,反而直接用了我默认的 fallback 补全(也就是文件补全)。

我写了个极简示例来复现这个问题:

正常工作的情况(命令名不带连字符)

执行这个配置:

zshprompt% compctl -k '(arg1 arg2 arg3)' nodash

输入nodash 后按一次Tab:

zshprompt% nodash arg

再按一次Tab,就能看到预期的补全选项:

zshprompt% nodash arg
arg1  arg2  arg3

出现问题的情况(命令名带连字符)

先看一下当前目录的文件作为参考:

zshprompt% ls .
file2.txt  myfile1.txt

执行同样逻辑的补全配置:

zshprompt% compctl -k '(arg1 arg2 arg3)' with-dash

输入with-dash 后按Tab,结果触发的是文件补全,完全不是我设置的选项:

zshprompt% with-dash
file2.txt    myfile1.txt

我翻了man zshcompctl手册,也在网上搜了一圈,都没找到相关的原因。所以想请教一下各位,有没有人知道怎么让compctl正确匹配带连字符的命令名?

提前谢谢大家了!

备注:内容来源于stack exchange,提问作者flax

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 16:25:29