gpt4 book ai didi

shell - 如何从我自己的脚本中为 fish shell 提供制表符补全?

转载 作者:行者123 更新时间:2023-12-03 12:42:21 25 4
gpt4 key购买 nike

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

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

我的目标是最终结果是这样的:

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

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

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

最佳答案

改编自 zanchey's comment on GitHub :

如果您有程序 myprog这需要 --_completion选项,您可以为 myprog 编写单个完成 stub 看起来像这样:

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

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

笔记:
  • --_completionpython-selfcompletion 建议的约定库,但你可以使用任何你想要的东西,这个答案不是特定于 Python 的
  • dbarnett/python-selfcompletion#2 (GitHub comment) 中所述,无法指定默认完成。 .您肯定必须为每个命令制作一个短 stub 。

  • 特别是对于 Python 脚本,以下库可能会在 future 的某个时候支持 fish 补全(但目前还没有):
  • argcomplete
  • python-selfcompletion
  • 关于shell - 如何从我自己的脚本中为 fish shell 提供制表符补全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20838284/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com