22

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

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

我想要的最终结果是这样的:

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

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

这可能吗,如果可以,怎么办?

4

2 回答 2

19

改编自zanchey 在 GitHub 上的评论

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

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

然后,您的程序将被调用为myprog --_completion myprog some arguments here,并且您可以使用适当的完成来响应。它应该只返回正在完成的当前标记(您也可以使用 将其传递给程序(commandline -ct),或者自己标记它),后跟可选的选项卡和简短描述。多个完成用新行分隔。

笔记:

特别是对于 Python 脚本,以下库可能会在将来的某个时候支持鱼补全(但目前还不支持):

于 2014-01-02T09:00:22.463 回答
13

你应该为你的脚本创建一个鱼自动完成功能source,或者把它放在~/.config/fish/completions/myprog.fish文件夹中。

参考:鱼文档

于 2013-12-30T12:16:23.513 回答