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

zsh compctl补全对含连字符的命令不触发的问题求助

zsh compctl补全对含连字符的命令不触发的问题求助

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

今天本来想给update-alternatives配置compctl补全规则,结果发现自定义补全完全没触发,只会用默认的文件补全逻辑。

我整理了一个极简示例来复现这个问题:

正常工作的场景(命令名无连字符)

执行这条配置:

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

我翻了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 15:59:27