我正在用Python编写一个小CLI(作为Mercurial的扩展),希望支持tab完成。具体来说,我希望在提示符中捕捉标签并显示匹配选项的列表(就像bash一样)。在
示例:输入节名称:
ext*TAB*
extensions
extras
问题是我不知道如何捕捉标签事件。我使用的是Mercurial的ui.prompt()
API,它只是在幕后调用raw_input()
。在
据我所知,raw_input()
只在“回车”时返回,如果用户输入一个制表符,则返回的字符串只包含一个"\t"
。在
Tags:
您几乎可以肯定地使用cmd module,它已经实现了制表符补全等功能,而且可能还使用了readline模块等等。重新发明轮子没有意义。在
标准库中提供了一个很好的例子,演示了如何与readline协作完成制表符,它作为rlcompleter模块提供—您不能按原样使用它(它是根据当前在Python的main和builtin中定义的名称来完成的),但是它展示了如何执行一般任务以及如何将它连接到
readline
。在为此,您使用^{} 模块。在
我认为最简单的代码:
用法示例:
^{pr2}$除了完成之外,
readline
还为您提供:相关问题 更多 >
编程相关推荐