我有一个带自动完成函数的completer类。简单版本:class Completer:
def __init__(self):
self.words = ["mkdir","mktbl", "help"]
self.prefix = None
def complete(self, prefix, index):
if prefix != self.prefix:
self.matching_words = [w for w in self.words if w.startswith(prefix)]
self.prefix = prefix
else:
pass
try:
return self.matching_words[index]
except IndexError:
return None
然后执行类似这样的操作来自动完成readline:
^{pr2}$
因此,示例中有3个单词表示自动完成[“帮助”,“mkdir”,“mktbl”]。在
如果用户执行:
> he
用户得到:
> help
但如果用户执行
> mk
因为没有一个匹配项(mkdir和mktbl),所以什么都没有发生
如果存在多个匹配项,如何显示选项?就像Bash对文件名的自动完成一样?
因此,用户可以得到如下信息:
> mk
mktbl mkdir
> mk
p.S.我试图将
_readline.insert_文本(…)
以及
打印。。。
但它会阻止插入,所以用户会得到这样的结果:
> mk
> mkmktbl mkdir
我需要一个linux解决方案。在