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

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

改编自zanchey对GitHub的评论:

如果你有一个带有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),或者自己将其标记),然后可选择使用选项卡和简短描述.多个完井用新线分开.

笔记:

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


fur*_*ins 10

你应该为你的脚本创建一个鱼自动完成功能的建议在这里source它或把它放在你的内部~/.config/fish/completions文件夹.

参考:鱼类文档