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
相关产品推荐
相关产品推荐

