zsh 完成:自定义脚本的完整选项

zsh 完成:自定义脚本的完整选项

我有自定义脚本的 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

相关内容