如何在emacs python-mode中取消解释器命令

时间:2013-03-04 20:26:30

标签: python emacs

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

2 个答案:

答案 0 :(得分:7)

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

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

幸运的是,在大多数交互式shell模式中,包括python-mode和替代方案,连续两次命中 CTRL-C 会向解释器发送一个ctrl-C。或者,从技术上讲, CTRL-C CTRL-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
>>> 

答案 1 :(得分:1)

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