按键 Ctrl + \ 会导致python和ipython核心转储并立即退出。我怎么能阻止这个?我不想禁用密钥或重新映射键盘。
我最近搬到了英国的键盘上,反之亦然,我以前在Enter键上方使用反斜杠/管道键,现在位于左移键盘和Z键之间。我发现我经常撞到SIGQUIT的键盘快捷键,并从交互式解释器中丢失所有变量。
答案 0 :(得分:2)
您似乎在* nix平台上。 Ctrl \ 会生成SIGQUIT
,所以这对Python来说并不是那么多。
如果要禁用组合键,可以在启动Python之前使用stty
:
stty quit undef
或者,使用以下命令运行Python:
stty quit undef; python; stty quit ^\\
会在执行python之前禁用键映射并稍后再将其设置回来。
答案 1 :(得分:1)
涉及信号处理程序的答案无法解决IPython 5及更高版本的问题,因为Ctrl-\
绑定现在在应用程序级别显式处理(这与从readline到prompt toolkit的迁移有关)。 / p>
要为较新版本的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)
答案 2 :(得分:0)
您可以使用signal模块并为SIGQUIT
信号设置处理程序:
import signal
def handler(signum, frame):
print("SIGQUIT")
signal.signal(signal.SIGQUIT, handler)
并将此代码添加到IPython startup files。