当我使用zsh completion
“服务”时,我只得到默认值start
并stop
完成。
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 语句之后也能进行解析?