击键Ctrl + \导致python和ipython到核心转储并立即退出。我怎样才能防止这一点?我不想禁用键或重新映射键盘。防止终止交互式python的SIGQUIT
我最近搬到了英国键盘,而我已经习惯了在Enter键上方的反斜杠/管道键,现在位于左移键和Z键之间。我发现我很频繁地碰撞SIGQUIT的键盘快捷方式,并失去了交互式解释器的所有变量。
击键Ctrl + \导致python和ipython到核心转储并立即退出。我怎样才能防止这一点?我不想禁用键或重新映射键盘。防止终止交互式python的SIGQUIT
我最近搬到了英国键盘,而我已经习惯了在Enter键上方的反斜杠/管道键,现在位于左移键和Z键之间。我发现我很频繁地碰撞SIGQUIT的键盘快捷方式,并失去了交互式解释器的所有变量。
可以使用signal模块,并设置一个处理程序SIGQUIT
信号:
import signal
def handler(signum, frame):
print("SIGQUIT")
signal.signal(signal.SIGQUIT, handler)
这个代码添加到IPython的startup files。
我应该提到,这是我目前的解决方案。我认为它感觉不舒服,因为它妨碍我运行实际上依赖于SIGQUIT出于合法原因的代码。 – wim
从IPython 5开始,这不再起作用。 Ctrl- \绑定是硬编码的。 –
涉及信号处理程序的回答并不能解决IPython 5和更高版本的问题,因为Ctrl-\
绑定现在在应用程序级显式处理(这与从readline迁移到提示工具包有关)。
要禁用Ctrl-\
为IPython中的较新版本(在IPython的5.3测试),用startup files来禁用绑定:
from IPython.terminal.shortcuts import force_exit
from IPython import get_ipython
ip = get_ipython()
ip.pt_cli.application.key_bindings_registry.remove_binding(force_exit)
谢谢,完美的作品。语法^ \\是什么意思? – wim
@wim基本上将'SIGQUIT'映射到Ctrl + \。你需要逃避反斜杠本身。 – devnull