CPython 交互式阅读线——更好地向后删除单词

Mis*_*iev 5 python configuration readline

是否可以更改readlineCPython 2.7 或 3.3 中的字边界?

我想要backward-kill-word(绑定到舒适C-w)并且具有与andbackward-word完全相同的单词边界。目前,无论语法、点等,都会擦除一半的行,并且为了更合理的向后删除而延伸太麻烦了。我现在也不想使用 IPython。forward-wordforward-kill-wordC-wM-DEL

只需重新配置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!)
Run Code Online (Sandbox Code Playgroud)

Mis*_*iev 4

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

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

简短的回答是:除了添加

import readline
readline.parse_and_bind('"\\C-w": backward-kill-word')
Run Code Online (Sandbox Code Playgroud)

~/.pythonrc.py,执行以下命令:

stty werase undef
Run Code Online (Sandbox Code Playgroud)

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

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