ZSH完成系统是否能够同时完成多个参数?

ZSH完成系统是否能够同时完成多个参数?,zsh,zsh-completion,zsh-zle,Zsh,Zsh Completion,Zsh Zle,场景: 假设脚本my_online\u searcher打开一个浏览器,搜索query,其中query可以是多个单词。这个脚本还提供了一个实用程序标志-s,显示搜索引擎的建议。例如: $ my_online_searcher -s lion rema lion remake lion remake cast lion remake zoo tycoon 2 lion remake zt2 remake lion king remastered lion's share remake lion k

场景:

假设脚本
my_online\u searcher
打开一个浏览器,搜索
query
,其中
query
可以是多个单词。这个脚本还提供了一个实用程序标志
-s
,显示搜索引擎的建议。例如:

$ my_online_searcher -s lion rema
lion remake
lion remake cast
lion remake zoo tycoon 2
lion remake zt2
remake lion king
remastered lion's share
remake lion king 2019
remastered lion king
remake lion king trailer
remaking lion king
期望的结果:

用户将键入
$my_online_searcher lion rema[TAB]
,ZSH完成菜单将提供上述选项

尝试达到预期结果:

创建一个小的完成脚本
\u my\u online\u search
,它几乎调用
my\u online\u search-s
支持函数来给出选项。比如:

[...]
completions=(${(f)"$(my_online_searcher -s ${arg} ${words:2})"})
_describe 'suggestions' completions
[...]
这允许对空格进行转义,并允许ZSH将
查询
视为单个参数

但是,每个单词的完成不允许建议的逐步完成。它要么重复前面的单词,要么过滤掉不以第一个参数开头的建议(例如,
$my\u online searcher lion rema[TAB]
->
$my\u online\u searcher lion remake lion king

一个想法是修改完成脚本中的
LBUFFER
。这是不允许的,因为ZSH给出了
LBUFFER
为只读的错误

TL;医生:

是否可以让ZSH完成系统将命令后的所有参数都视为可修改参数?换句话说,我可以在ZSH中同时对多个参数提出补全吗