如何为 fish 函数/别名启用制表符补全?

如何为 fish 函数/别名启用制表符补全?

这里可能更容易使用示例。我有一个函数ss,它只调用:

sudo systemctl $argv

Tab 补全功能在完整命令中可以正常工作,但在ss函数中则不行。例如,

ss start mys<tab>

尝试从文件系统完成,而不是使用命令的完成功能systemctl

答案1

经过一番研究,似乎 fish 中有两个即将推出的功能,但它们都不在当前的稳定版本 (2.1.1) 中。

第一个是和--wraps的参数,它启用完成继承。给出为注册的所有完成。functioncompletefunction foo --wraps=barfoobar

第二种是通过abbr命令使用缩写,其工作原理与 vim 缩写非常相似。abbr -a gco='git checkout'注册一个缩写gco以扩展为git checkout。 键入gco后跟空格或回车键会扩展缩写,这自然允许任何已注册的完成工作。

如果没有这些功能,那么唯一剩下要做的事情就是为你的函数/别名编写自定义完成脚本,这很愚蠢。

相关内容