Autocomplete 使用Python'完成制表符;s Cmd.Cmd
在python中使用Cmd.Cmd框架测试了一段时间后,我注意到一个问题,我不知道该怎么办。另外,我相信在几个小时前就可以工作了(或者我只是疯了),所以这更奇怪 我有下面的示例代码,在Windows和Linux系统上都进行了测试(所以这不是Windows的问题),但是制表符完成根本不起作用 如果我在Python2中使用完全相同的代码,那么它在Linux系统上确实可以工作(但在Windows系统上却不行)Autocomplete 使用Python'完成制表符;s Cmd.Cmd,autocomplete,python-3.x,tab-completion,Autocomplete,Python 3.x,Tab Completion,在python中使用Cmd.Cmd框架测试了一段时间后,我注意到一个问题,我不知道该怎么办。另外,我相信在几个小时前就可以工作了(或者我只是疯了),所以这更奇怪 我有下面的示例代码,在Windows和Linux系统上都进行了测试(所以这不是Windows的问题),但是制表符完成根本不起作用 如果我在Python2中使用完全相同的代码,那么它在Linux系统上确实可以工作(但在Windows系统上却不行) 你知道为什么会发生这种情况,或者我能做些什么,使制表符完成成为可能吗?它实际上对我在Linu
你知道为什么会发生这种情况,或者我能做些什么,使制表符完成成为可能吗?它实际上对我在Linux上的Python2和Python3都有效。但是,我的python安装程序是使用readline支持编译的,这是根据需要自动执行的。我怀疑你的LinuxPython3不是用它编译的
不幸的是,readline是特定于Unix的。有关Windows上其他选项的讨论,请参阅。在Mac上安装pyreadline模块后,我让它在Windows上工作。在Mac上有。
您可以通过
pip install gnureadline
获得它它已经用Python2.6、2.7、3.2和3.3进行了测试 您在这里实现了完整的名称吗?
complete\u XY
函数用于完成参数(因此当我输入test f
时,它可以为我提供test foobar
),但是命令的完成是从所有可用的do\u XY
函数自动生成的。另外,当我按tab键时,它只是将一个选项卡放到命令行中,而当没有兼容的完成时,就不会发生任何事情(因为函数返回一个空列表)。因此,在这种情况下,开发人员只能建议用户使用readline支持编译Python设置(除了执行自己版本的命令完成)?
import cmd
class Shell ( cmd.Cmd ):
def do_test ( self, params ):
print( 'test: ' + params )
def do_exit ( self, params ):
return True
def do_quit ( self, params ):
return True
if __name__ == '__main__':
x = Shell()
x.cmdloop()