【发布时间】:2014-01-21 10:29:52
【问题描述】:
按键 Ctrl + \ 导致 python 和 ipython 核心转储并立即退出。我怎样才能防止这种情况?我不想禁用该键或重新映射键盘。
我最近使用了英式键盘,而我习惯于在 Enter 键上方使用的反斜杠/竖线键现在位于左移键和 Z 键之间。我发现我经常碰到 SIGQUIT 的键盘快捷键,并且从交互式解释器中丢失了所有变量。
【问题讨论】:
标签: python signals ipython core coredump
按键 Ctrl + \ 导致 python 和 ipython 核心转储并立即退出。我怎样才能防止这种情况?我不想禁用该键或重新映射键盘。
我最近使用了英式键盘,而我习惯于在 Enter 键上方使用的反斜杠/竖线键现在位于左移键和 Z 键之间。我发现我经常碰到 SIGQUIT 的键盘快捷键,并且从交互式解释器中丢失了所有变量。
【问题讨论】:
标签: python signals ipython core coredump
涉及信号处理程序的答案不能解决 IPython 5 及更高版本的问题,因为 Ctrl-\ 绑定现在在应用程序级别显式处理(这与从 readline 迁移到提示工具包有关)。
要为较新版本的 IPython(在 IPython 5.3 上测试)禁用 Ctrl-\,请使用 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)
【讨论】:
您可以使用signal 模块并为SIGQUIT 信号设置处理程序:
import signal
def handler(signum, frame):
print("SIGQUIT")
signal.signal(signal.SIGQUIT, handler)
并将此代码添加到 IPython startup files。
【讨论】: