我正在运行Ubuntu 13.10和鱼2.1.0.我想自己写一个
Python脚本来从命令行执行一些任务.该脚本将需要命令行参数.
我如何写我的脚本,以便鱼可以请求并获得给定参数的可能值.潜在值列表是动态的.也就是说,它将被程序确定(例如,与某些标准匹配的文件夹名称的列表).
我目标的最终结果是:
user@machine ~> myprog argument=fol<TAB> folder1 folder2 folder3
其中myprog是我的脚本文件,参数是参数名称,folder1等是我脚本中某些函数生成的有效值.
这是可能的,如果是这样的话?
改编自
zanchey’s comment on GitHub:
如果你有一个程序myprog,它采用–_ completion选项,你可以为myprog编写一个完整的存根,如下所示:
complete --command myprog --arguments (myprog --_completion (commandline -cp)
然后,您的程序将被调用为myprog –_在此处完成myprog一些参数,您可以通过适当的完成进行响应.它应该只返回正在完成的当前令牌(您也可以使用(commandline -ct)将其传递给程序,或者自己进行令牌化),然后可以选择通过选项卡和简短描述.多个完成用新行分隔.
笔记:
> __完成是由python-selfcompletion库建议的约定,但您可以使用任何您想要的,而这个答案不是Python特定的
>没有办法指定默认完成,如dbarnett/python-selfcompletion#2 (GitHub comment)所述.您一定要为每个命令创建一个短小的存根.
对于Python脚本,以下库可能会在将来的某个时刻支持鱼类完成(但是还没有):