将inferior-python-mode中的C-z键重新映射为python退出,而非emacs挂起或撤销

0 投票
1 回答
540 浏览
提问于 2025-04-17 07:55

这里有个技术问题,关于如何退出当前的Python解释器。

通常情况下,如果我在普通的命令行中运行解释器,按下C-z就能解决问题。这会让Python退出,正在运行的程序也会停止。不过,解释器的进程还是会继续存在。

但是在Emacs中,当我在下方的shell里按C-z时,它会执行撤销命令(我使用的是CUA模式)。如果我禁用CUA模式,按C-z就会执行暂停Emacs的命令。我想要的是要么完全取消C-z的功能,要么把C-z重新映射成可以给Python发送中断信号,就像在普通命令行中那样。

我尝试了这些比较激烈的方法:

(global-unset-key "\C-z")

(global-unset-key [?\C-z])

但是都没有效果,C-z还是被卡住了,继续执行撤销或暂停/最小化Emacs。

我还尝试了发送普通信号:

我能给下方的shell发送的唯一信号是QUIT,这样做不太好,因为这会直接杀掉解释器和它的进程(C-c C-)。而STOP信号则没有效果。

有没有什么好主意呢?

1 个回答

1

在运行一个子进程的时候,你通常可以用 C-c 这个组合键来发送一些控制指令。记住这一点,试试下面的内容:

C-c C-z

对我来说,这个操作是和 comint-stop-subjob 这个命令绑定在一起的。

撰写回答