zsh 可以完成命令标志吗?

Can zsh complete command flags?

有没有办法让 zsh 在命令行上完成长标志名?

$ command --reall<tab> 
$ command --really-long-flag-name

似乎是一件很害羞的事情。

简短的回答是肯定的,或者当然可以。

要打开 zsh 的完成系统,您需要执行以下操作 – 可能在像您的 ~/.zshrc 这样的启动文件中:

autoload -U compinit && compinit

在大多数现代类 Unix 系统上,一旦您这样做,您应该会发现许多命令已经完成了它们的标志和参数,因为 zsh 附带了一个用于常见 Unix 命令和实用程序的完成函数库。这个库应该安装在像 /usr/local/share/zsh/function 这样的位置(或类似的位置,取决于你的系统)并且由一堆文件名以 _ 字符开头的脚本组成,每个脚本都定义了完成一个特定的命令。

如果您感兴趣的命令或实用程序尚未由 zsh 正确完成,您有多种选择:

  • 查看 zsh-completions 包。 (它很可能可以由您的操作系统或发行版的包管理器安装。)

  • 阅读您希望完成的工具的文档。许多 Unix 实用程序附带了 bash and/or zsh 的完成脚本,或者以某种方式生成完成脚本。

  • 如果一切都失败了,请阅读documentation on zsh’s completion system(或找一本好书或在线教程)并自己编写。这显然是非常重要的!

阅读该 zsh 文档可能还会向您展示如何执行您可能还不知道的其他您想要的操作,例如打开基于菜单的完成。