使用 "windows like" 选项自动完成命令(以斜杠开头)
Auto complete commands with "windows like" options (starting with slash)
我正在尝试为 zsh(或 bash)编写自定义自动完成脚本,用于具有以斜杠开头的选项的命令。
例如:MyCommand /foo=bar.txt /yolo=test /final=4
我一直在尝试使用 zsh 助手 _arguments
但它没有用:
#compdef MyCommand
_MyCommand()
{
local curcontext="$curcontext" state line
typeset -A opt_args
_arguments \
'/foo=:foo:_files'
}
_MyCommand "$@"
但是当我用 --
替换 /
时效果很好。
我怎样才能做到这一点?
您可以像这样使用 _regex_arguments
来做到这一点:
matchany=/$'[^[=10=]]##[=10=]'/
_regex_arguments _mycommand "$matchany" \( /$'/foo='/ ':option:option:(/foo=)' "$matchany" ':file:filename:_files' \| /$'/yolo='/ ':option:option:(/yolo=)' "$matchany" ':optarg:optarg:(test this)' \| /$'/final='/ ':option:option:(/final=)' /$'[0-9]##[=10=]'/ ':number:number:' \) \#
_mycommand "$@"
您可以在此处阅读有关 _regex_arguments
的更多信息
http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Completion-Functions
或此处:https://github.com/vapniks/zsh-completions/blob/master/zsh-completions-howto.org
这里需要注意的重要一点是,选项名称的模式匹配末尾没有空字符 (\0)。
我正在尝试为 zsh(或 bash)编写自定义自动完成脚本,用于具有以斜杠开头的选项的命令。
例如:MyCommand /foo=bar.txt /yolo=test /final=4
我一直在尝试使用 zsh 助手 _arguments
但它没有用:
#compdef MyCommand
_MyCommand()
{
local curcontext="$curcontext" state line
typeset -A opt_args
_arguments \
'/foo=:foo:_files'
}
_MyCommand "$@"
但是当我用 --
替换 /
时效果很好。
我怎样才能做到这一点?
您可以像这样使用 _regex_arguments
来做到这一点:
matchany=/$'[^[=10=]]##[=10=]'/
_regex_arguments _mycommand "$matchany" \( /$'/foo='/ ':option:option:(/foo=)' "$matchany" ':file:filename:_files' \| /$'/yolo='/ ':option:option:(/yolo=)' "$matchany" ':optarg:optarg:(test this)' \| /$'/final='/ ':option:option:(/final=)' /$'[0-9]##[=10=]'/ ':number:number:' \) \#
_mycommand "$@"
您可以在此处阅读有关 _regex_arguments
的更多信息
http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Completion-Functions
或此处:https://github.com/vapniks/zsh-completions/blob/master/zsh-completions-howto.org
这里需要注意的重要一点是,选项名称的模式匹配末尾没有空字符 (\0)。