使用 fish 函数中的选项包装命令

使用 fish 函数中的选项包装命令

有没有办法将带有选项的命令包装在函数中,以便显示带有选项的该命令的完成内容?

例如,我希望能够做到这一点:

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

相关内容