zsh 补全不适用于“服务”

zsh 补全不适用于“服务”

当我使用zsh completion“服务”时,我只得到默认值startstop完成。

zsh“服务”的完成由 处理/usr/share/zsh/functions/Completion/Unix/_init_d

例如,当使用completion for时service ssh <TAB>,应该解析ssh启动文件/etc/init.d/ssh并获取所有case语句,例如:

restart)

...

try-restart)

但当案例陈述后有评论时,这不起作用

restart) ### comment

...

try-restart) ### comment

_init_d我认为解析的部分是这样的:

read -u0 -k2 magic < $script && [[ $magic = '#!' ]] && {
  cmds=( ${(f)"$(< $script)"} )
  cmds=( ${(M)cmds:#[[:blank:]]#${~what}([[:blank:]]#\|[[:blank:]]#${~what})#[[:blank:]]#\)} )
  cmds=( ${${(j:|:s:|:)cmds}//[^-a-z_]} )
}

我如何修改它,以便即使注释位于 case 语句之后也能进行解析?

相关内容