如何从我自己的脚本中提供鱼壳的选项卡完成?

时间:2013-12-30 11:08:43

标签: shell autocomplete tab-completion fish

我正在运行Ubuntu 13.10和钓鱼2.1.0。我想自己写一个Python脚本来从命令行执行一些任务。该脚本将需要命令行参数。

如何编写我的脚本,以便fish可以请求并获取给定参数的可能值。潜在价值清单是动态的。也就是说,它将以编程方式确定(例如,符合某些标准的文件夹名称列表)。

我的目标最终结果是:

user@machine ~> myprog argument=fol<TAB>
folder1  folder2  folder3

myprog是我的脚本文件,argument是参数名称,folder1等是我脚本中某些函数生成的有效值。

这是可能的,如果是这样的话?

2 个答案:

答案 0 :(得分:13)

改编自zanchey's comment on GitHub

如果您的程序myprog采用--_completion选项,则可以为myprog编写一个完整存根,如下所示:

complete --command myprog --arguments '(myprog --_completion (commandline -cp)'

然后您的程序将被调用为myprog --_completion myprog some arguments here,您可以使用相应的完成进行回复。它应该只返回正在完成的当前令牌(您也可以使用(commandline -ct)将其传递给程序,或者自己标记),然后可选择使用选项卡和简短描述。多个完井用新线分开。

注意:

对于Python脚本,以下库可能会在将来某些时候支持鱼类完成(但它们还没有):

答案 1 :(得分:9)

您应该按照建议的heresource为您的脚本创建鱼群自动完成功能,或将其放在~/.config/fish/completions文件夹中。

参考:fish docs