新版IPython不再依赖readline
,而是使用纯Python库prompt-toolkit
,解决了苹果和Windows系统的维护问题。
一个新功能是编辑多行代码块的能力,使用光标键在代码块中自由移动 - 有了这个功能,至少对我来说,一个问题是:因为 ret 在您的代码中插入一个新行,要将整个 block 传递给解释器,您必须使用快捷键 alt+ret 或者可能不太方便的键序列esc 后跟 ret。
我说这是个问题,因为我选择的终端仿真器是 XTerm,而且在许多 Linux 发行版上,快捷方式 alt+ret 不会传递给应用程序,但它由运行 IPython 的 XTerm 直接使用,以切换所述终端的屏幕满度(@ThomasDickey,xterm 的维护者和合著者指出,默认情况下,xterm 不关心发送即使取消绑定(bind)全屏操作,应用程序也会在 Enter 上添加修饰符位)。
出于这个原因,我想至少修改这个特定的 IPython 键绑定(bind)。
我找到了不适用于新的 5.0 版本的 IPython 先前版本(基于 readline
的版本)的说明(有点)。
我需要的是指导我在 IPython 的用户文档中找到我可以绑定(bind)的可能操作的名称、与操作绑定(bind)的快捷方式的名称以及配置新键绑定(bind)。
如果没有这种类型的规范答案,我可能对完成此特定键绑定(bind)的方法感到满意,条件是该方法在 IPython 6.0 中仍然有效
最佳答案
您可以更改 xterm 的配置。
xterm 是可配置的(并记录在案)。在 xterm 手册中,Default Key Bindings部分显示了此键的默认绑定(bind):
Alt <Key>Return:fullscreen() \n\
您可以通过多种方式抑制该绑定(bind):
- 使用
omitTranslation
资源来抑制该功能 - 将
fullscreen
资源设置为never
然而,仅仅抑制它不会使它发送一些有趣的东西(xterm 忽略 Enter 的修饰符)。设置 translation
资源有效,例如,在您的 $HOME/.Xdefaults
文件中:
*VT100*translations: #override \n\
Alt <Key>Return: string("\033[27;3;13~")
关于python - IPython 5.0 和控制台中的键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38659721/