dav*_*one 19 shell autocomplete tab-completion fish
我正在运行Ubuntu 13.10和fish 2.1.0.我想自己写一个Python脚本来从命令行执行一些任务.该脚本将需要命令行参数.
如何编写我的脚本,以便fish可以请求并获取给定参数的可能值.潜在价值清单是动态的.也就是说,它将以编程方式确定(例如,符合某些标准的文件夹名称列表).
我的目标最终结果如下:
user@machine ~> myprog argument=fol<TAB>
folder1 folder2 folder3
Run Code Online (Sandbox Code Playgroud)
myprog我的脚本文件在哪里,argument参数名称folder1等是我脚本中某些函数生成的有效值.
这是可能的,如果是这样的话怎么样?
dav*_*one 14
如果你有一个带有myprog该--_completion选项的程序,你可以编写一个完整的存根myprog,如下所示:
complete --command myprog --arguments '(myprog --_completion (commandline -cp)'
Run Code Online (Sandbox Code Playgroud)
然后,您的程序将被调用myprog --_completion myprog some arguments here,您可以使用适当的完成进行响应.它应该只返回正在完成的当前令牌(您也可以将其传递给程序(commandline -ct),或者自己将其标记),然后可选择使用选项卡和简短描述.多个完井用新线分开.
笔记:
--_completion是python-selfcompletion库建议的约定,但你可以使用你想要的任何东西,这个答案不是特定于Python的特别是对于Python脚本,以下库可能在将来的某些时候支持鱼类完成(但它们还没有):