【发布时间】:2013-03-04 20:26:30
【问题描述】:
如果我在 python 解释器中输入错误的命令,有时我只会看到...。例如,如果我输入help(random.unif 并按回车,我将无法输入新命令。我必须退出 emacs 并再次启动 python 和解释器。有办法纠正吗?
【问题讨论】:
如果我在 python 解释器中输入错误的命令,有时我只会看到...。例如,如果我输入help(random.unif 并按回车,我将无法输入新命令。我必须退出 emacs 并再次启动 python 和解释器。有办法纠正吗?
【问题讨论】:
正如 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
>>>
【讨论】:
通常 CTRL-C 有效。不确定emacs嵌入式解释器。或者,只需向解释器提供它正在等待的任何内容(在您的示例中为))。
【讨论】:
readline -esque 模式与