6

如果我在 python 解释器中输入错误的命令,有时我只会看到.... 例如,如果我键入help(random.unif并按 Enter,我将无法输入新命令。我必须退出 emacs 并再次启动 python 和解释器。有没有办法纠正这个?

4

2 回答 2

7

正如 Pavel Anossov 解释的那样,您想向 Python 发送一个 CTRL-C 来中断它。

但是在 emacs 中,默认情况下,CTRL-C是一个前缀键。

幸运的是,在大多数交互式 shell 模式下,包括 python-mode 和替代模式,CTRL-C连续点击两次会将 ctrl-C 发送到解释器。或者,从技术上讲,CTRL-CCTRL-C是必然的comint-interrupt-subjob。(当然,您可以以任何其他方式运行它——即使META-X comint-interrupt-subjob您真的想要。)结果如下所示:

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> help(f
...   ^C ^C
KeyboardInterrupt
>>> 

另一种选择是使用quoted-insert命令,通常绑定到CTRL-Q,然后点击CTRL-C。但是,因为这不会中断通常的行输入,所以通常必须在其后加上换行符。结果如下所示:

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> help(f
... ^C
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyboardInterrupt
>>> 
于 2013-03-04T20:36:55.330 回答
1

通常CTRL-C有效。不确定emacs嵌入式解释器。或者,只需向解释器提供它正在等待的任何内容(在您的示例中为))。

于 2013-03-04T20:28:22.890 回答