CMD 自动补全功能不正常

3 投票
2 回答
2565 浏览
提问于 2025-04-18 01:35

(Python 3.3.4)

我现在正在用cmd模块来开发一个应用程序,但不知道为什么,自动补全功能总是不能正常工作。每次我按下tab键时,它只会把我的输入字符串缩进而已!!

比如说,如果我输入的是这样: (MyShell)>> ta«光标在这里» 我按一下«tab»键,结果变成了: (MyShell)>> ta «光标在这里»

我在IDLE、Windows Power Shell和Python解释器里都试过,结果都是一样... 命令的补全和参数的补全都不管用!!

我的代码是这样的:

class MyShell(cmd.Cmd):

    def __init__(self):
        cmd.Cmd.__init__(self)
        self.intro = "Welcome to MyShell test.\nPowered by Rodrigo Serrão"
        self.prompt = "(MyShell)>>"

    def do_talk(self, text):
        print("Hello")

    stuff = ["blabla", "bananas!", "noodles"]
    def complete_talk(self, text, line, s, e):
        if text:
            return [i for i in stuff if i.startswith(text)]
        else:
            return stuff


MyShell().cmdloop()

我看过一些关于这个问题的提问,包括这个: Python Cmd Tab Completion Problems

可能和那个readline有关。我尝试导入它,但显然我没有这个模块。

2 个回答

1

我正在用Python写一个交互式的命令行应用,为了让它能自动补全,你需要安装pyreadline,因为readline模块只适用于Unix系统。

如果你不知道怎么安装,只需执行以下命令:

pip install pyreadline

5

如果你遇到这个问题,可以试试这个方法。

首先,打开“运行”窗口,然后输入regedit。

接着,找到这个路径:LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor。

在这里,把PathCompletionChar的值改成9。通常这个值是40,这意味着你现在的自动补全键不是TAB键。修改完值后,关闭这个窗口,然后重启命令提示符(CMD)。

这样就解决了。现在你可以用TAB键正常进行路径的自动补全了。

撰写回答