有没有办法将带有选项的命令包装在函数中,以便显示带有选项的该命令的完成内容?
例如,我希望能够做到这一点:
function remove --wraps='pikaur -R'
pikaur -R $argv;
end
这样使用remove
将完成已安装的软件包,但这是不起作用的。
答案1
该--wraps
参数仅接受裸命令。您可以使用--wraps='pikaur'
但不能--wraps='pikaur -R'
。
如果您想要的完成仅在-R
给出标志时触发,则使用--wraps
可能不够。您需要添加自己的完成文件。幸运的是,Fish 使这变得非常简单。
是否有命令可以让你查询或列出有效选项?我不熟悉pikaur
,但例如,假设你的函数的有效参数是由像pikaur ls
或这样的命令给出的pikaur query
,或者它们可能是的子目录/etc/pikaur
。如果有这样的命令,你可以为你的函数创建一个完成文件(即,如果你的函数位于~/.config/fish/functions/remove.fish
,则创建~/.config/fish/completions/remove.fish
),其中包含以下内容:
complete -c remove --no-files --arguments "(<query command>)"
注意:如果您想参考现有的补全,您可以查看检查列出的目录echo $fish_complete_path
。