2

设想:

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

$ 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 完成菜单将给出上述选项。

尝试达到预期结果:

创建一个小完成脚本_my_online_searcher,它几乎调用了my_online_search -s <query>支持函数来给出选项。就像是:

[...]
completions=(${(f)"$(my_online_searcher -s ${arg} ${words:2})"})
_describe 'suggestions' completions
[...]

这允许对空格进行转义,并允许 ZSH 将query视为单个参数。

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

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

TL;博士:

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

4

0 回答 0