zsh 中具有相同名称的别名的制表符补全

Tab completion for alias with the same names in zsh

我正在使用 zsh。

我有一个命令 foo,我使用 alias foo="sudo foo" 作为快捷方式。我希望 zsh 像我输入的那样完成命令 foo.

我用谷歌搜索并找到 compdef _foo f=foo 可以处理它。当我键入 f something<tab> 时,完成工作正常。但是当我尝试 compdef _foo foo=foo 然后 foo something<tab> 时,它不起作用。

当我使用与原始命令同名的别名时,有没有办法处理 Tab 补全?

这个问题其实是我遇到的特例

正如@blueray 所说,zsh 能够正常完成像 sudo foo 或它的别名这样的命令。

感谢@rcwnd_cz ,我发现添加 setopt complete_aliases 解决了我的问题。关键是我在其他地方设置了一个别名,将 sudo 映射到 sudo FOO=bar。结果,alias foo="sudo foo" 是一个“别名中的别名”,zsh 拒绝完成它。设置setopt complete_aliases完美解决