我也想在参数中自动完成我的python脚本。
我从来没有真正理解过bash_completion是如何工作的(用于参数),但在我深入研究之后,我明白了:
的副本
第二点特别不好,因为我想让它自动生成。
最好的情况是,shell在每个TAB都会询问我的程序要完成什么,但我的印象是这不能真正工作,对吗?
第二种选择可能只是编写一个从argparse解析器到shell函数的转换器,该函数可以正确完成。
发布于 2012-11-26 03:50:47
无耻的自我推销:https://github.com/kislyuk/argcomplete
argcomplete为argparse提供bash完成。
发布于 2012-02-24 02:32:44
Bash "completion"真的很棒。而且对于用Python编写的程序来说也很容易....
我认为这正是您想要的:optcomplete: Shell Completion Self-Generator for Python。它是可用的,例如,Ubuntu中的"python-optcomplete“包。
您在python程序中插入几行代码,然后用户(一次)运行bash " complete“程序,告诉bash如何完成参数:
complete -F _optcomplete <program>
现在用户已经完成了!默认情况下,它在程序选项上提供简单的补全。有关如何自定义特定选项的完成工作方式的示例,请参阅示例。它写得很漂亮,并且很容易扩展到处理子命令,替代完成选项等!
更新:
有关zsh中的完成(对于optparse和argparse),请参阅genzshcomp 0.3.1 : Python Package Index
正如@englebip所指出的,我们仍然需要一些类似的东西用于Python2.7和3.2中引入的新argparse
模块,因为optparse
现在已被弃用。
下面是关于朝这个方向发展的讨论:
另请参阅此背景介绍如何完成此操作:How does argparse (and the deprecated optparse) respond to 'tab' keypress after python program name, in bash? - Stack Overflow
https://stackoverflow.com/questions/8387924
复制相似问题