【问题标题】:Setting completekey=None removes up-arrow functionality设置 completekey=None 删除向上箭头功能
【发布时间】:2016-06-23 02:20:03
【问题描述】:

我正在尝试使用 Python 中的 cmd 库编写一个小型 REPL。它提供的功能之一是自动完成选项卡,这是我不想要的。

幸运的是,文档提到“如果 completekey 不是 None 并且 readline 可用,则自动完成命令完成。”所以我在实例化我的cmd.Cmd 子类时设置了completekey=None,这很有效。

但是,cmd 模块的主要功能,支持向上箭头历史记录的 readline 的使用也被禁用,现在我回到 ^[[A 的。

为什么会这样,有解决办法吗?

【问题讨论】:

  • 这很可能发生,因为当completekey=None 时,readline 模块永远不会加载(请参阅the source。您可以通过子类化cmd.Cmd 来解决问题,覆盖cmdloop或覆盖complete 方法。

标签: python python-3.x read-eval-print-loop


【解决方案1】:

readline 模块仅在 completekey 具有非 None 值时才被导入。看起来使用 readline 并禁用完成的唯一方法是指定一个无操作完成器。

class CmdSubclass(Cmd):
    # Other configuration
    # ...

    def complete(self, *args):
        pass

【讨论】:

  • 这确实会阻止人们进入原始标签,但我想我可以忍受。
  • 您还可以将completekey 设置为您不需要经常使用的其他内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 2017-01-11
  • 1970-01-01
  • 2018-11-22
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多