我有自定义脚本的 zsh 完成规则。我的脚本可以采用零个或多个选项(以 开头-
)和零个或多个任意字符串(模式):
_arguments -S : \
'--foo' \
'--bar' \
'1:pattern:'
该规则仅部分有效,格式如下:
script "somestring" <TAB>
提供--foo
或--bar
并--f<TAB>
自动完成--foo
然而,
script <TAB>
不执行任何操作,我希望列出选项 ( --foo
, --bar
)
即使当我明确地开始时,--
它也会显示选项,但不会自动完成它们,即使我正在打字--f<TAB>
并且我想要什么选项也没有歧义。
script --f<TAB>
应该自动完成--foo
所以,总而言之,既然string
可以是任何东西,就没有什么可以自动完成的。因此,当我按下 时,我想自动完成 --options,无论我是否已经输入了字符串/模式
我想,我必须在完成规则中指定以某种方式开头的任何内容-
都是选项,而不是字符串,因此应该从可用选项自动完成
答案1
我找到了一些适合我的东西:
___script() { _arguments -S : }
__script() { _arguments -S : --foo --bar 1:pattern:___script }
compdef __script script