【问题标题】:CPython interactive readline — better backwards deletion of wordsCPython 交互式 readline — 更好地向后删除单词
【发布时间】:2014-02-27 05:52:57
【问题描述】:

是否可以在 CPython 2.7 或 3.3 中更改 readline 的字边界?

我希望backward-kill-word(绑定到舒适的C-w)和backward-word 具有与forward-wordforward-kill-word 完全相同的字边界。目前C-w 删除了一半的行,不考虑语法、点等,延伸M-DEL 以获得更明智的向后删除太麻烦了。我现在也不想使用 IPython。

只需将C-w 重新配置为类似于M-DEL 就可以了(将其设置为backward-kill-word 不会做任何事情,因为M-DEL 函数可能被称为其他名称。)

更新:它变得陌生了!

>>> import readline
>>> readline.parse_and_bind('"C-k": backward-kill-word')
(press up, press C-k a lot, witness it working)
>>> readline.parse_and_bind('"\\C-w": backward-kill-word')
(press up, press C-w, and see that its function did not change, it wasn't re-bound!)

【问题讨论】:

    标签: python configuration readline


    【解决方案1】:

    基于@mischa-arefiev 的回答,我现在在我的PYTHONSTARTUP 文件中有以下内容,适用于ipython2 和ipython3:

    import readline
    import subprocess
    readline.parse_and_bind('"\\C-w": backward-kill-word')
    subprocess.call(['stty', 'werase', 'undef'])
    

    我在 Linux 上使用它,我不确定它是否也适用于 Mac。

    【讨论】:

      【解决方案2】:

      回答我自己的问题,因为我在这里找到了答案:

      https://superuser.com/questions/212446/binding-backward-kill-word-to-ctrlw

      简短的回答是:除了添加

      import readline
      readline.parse_and_bind('"\\C-w": backward-kill-word')
      

      ~/.pythonrc.py,执行这个:

      stty werase undef
      

      在同一终端中运行 Python 之前的某个时间。这将从终端控制C-w

      不要删除问题,以防有人在 Python 交互式上下文中偶然发现问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-25
        相关资源
        最近更新 更多