python - IPython 5.0 和控制台中的键绑定(bind)

标签 python ipython keyboard-shortcuts xterm

新版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/

相关文章:

python - Tensorflow:如何保存变量并将它们加载到不同的变量?

python - Beautifulsoup 返回奇怪的字符(中文)

python - 在 python 中返回 "for if in"语句

visual-studio - Visual Studio 2008 - 跳转到行号快捷方式

keyboard-shortcuts - 如何将多行/选择复制并粘贴到相同数量的多行/选择而不映射它们1 :1 in Sublime Text 2?

python - wtforms 在验证表单后引发验证错误

python - 从特定值开始读取 3,000 个文件并将其连接到 pandas 数据帧中,python

python - 如何在 ipython 中显示对象的对象

python - 将 pylab 与 ipython 一起使用 - ValueError : unknown locale: UTF-8

qt - 在 qt 快捷方式中复制 LINE