擊鍵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