Readline自动完成和空格

时间:2013-12-19 20:30:08

标签: python autocomplete readline

我在python中使用readline进行自动完成

如果我有,我正试着这样做:

names = ['ben dodds', 'james asda', 'izzy smidt']

当我有

> Insert name: 
> be TAB
ben dodds
> ben TAB
ben dodds, james asda, izzy smidt

最后一个是错误的,因为它应该只显示ben dodds

到目前为止,这是我的代码:

def completer(text, state):
    options = [x for x in names if x.startswith(text)]
    try:
        return options[state]
    except IndexError:
        return None



readline.set_completer(completer)
if 'libedit' in readline.__doc__:
    readline.parse_and_bind("bind ^I rl_complete")
else:
    readline.parse_and_bind("tab: complete")

name = raw_input('Enter name\n')
print name

到目前为止,我已经收集了它与readline.set_completer_delims()有关但我无法弄清楚如何让它工作,任何帮助都将不胜感激

我已经尝试了

    readline.set_completer_delims('')

它没有用

1 个答案:

答案 0 :(得分:2)

试试这个:

readline.set_completer_delims('')

我将该行添加到您的脚本中,如下所示:

import readline


names = ['ben dodds', 'james asda', 'izzy smidt']

def completer(text, state):
    options = [x for x in names if x.startswith(text)]
    try:
        return options[state]
    except IndexError:
        return None


readline.set_completer(completer)
readline.set_completer_delims('')

if 'libedit' in readline.__doc__:
    readline.parse_and_bind("bind ^I rl_complete")
else:
    readline.parse_and_bind("tab: complete")

name = raw_input('Enter name\n')
print name

这解决了我的问题(在64位Ubuntu 12.04上使用python 2.7.3或2.7.6)。