143

如何重复上一个命令?常用键:Up、Ctrl+Up、Alt-p 不起作用。它们产生无意义的字符。

(ve)[kakarukeys@localhost ve]$ python
Python 2.6.6 (r266:84292, Nov 15 2010, 21:48:32) 
[GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello world"
hello world
>>> ^[[A
  File "<stdin>", line 1
    ^
SyntaxError: invalid syntax
>>> ^[[1;5A
  File "<stdin>", line 1
    [1;5A
    ^
SyntaxError: invalid syntax
>>> ^[p
  File "<stdin>", line 1
    p
    ^
SyntaxError: invalid syntax
>>> 
4

26 回答 26

173

在 IDLE 中,转到 Options -> Configure IDLE -> Keys 并选择 history-next 然后 history-previous 以更改密钥。

然后单击 Get New Keys for Selection,您就可以选择所需的任何组合键了。

于 2012-09-25T19:41:26.833 回答
65

我使用以下命令在 python shell 上启用历史记录。

这是我的.pythonstartup文件。PYTHONSTARTUP 环境变量设置为此文件路径。

# python startup file 
import readline 
import rlcompleter 
import atexit 
import os 
# tab completion 
readline.parse_and_bind('tab: complete') 
# history file 
histfile = os.path.join(os.environ['HOME'], '.pythonhistory') 
try: 
    readline.read_history_file(histfile) 
except IOError: 
    pass 
atexit.register(readline.write_history_file, histfile) 
del os, histfile, readline, rlcompleter

你需要有模块 readline、rlcompleter 来启用它。

在以下网址查看相关信息:http: //docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP

所需模块:

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html
于 2010-11-27T03:13:25.753 回答
50

Alt + p 用于历史记录中的上一个命令,Alt + n 用于历史记录中的下一个命令。

这是默认配置,您可以根据自己的喜好从选项 -> 配置空闲更改这些快捷键。

于 2013-07-23T01:24:13.233 回答
19

您没有指定哪个环境。假设您正在使用 IDLE。

来自 IDLE 文档:命令历史记录:

Alt-p retrieves previous command matching what you have typed.
Alt-n retrieves next.
      (These are Control-p, Control-n on the Mac)
Return while cursor is on a previous command retrieves that command.
Expand word is also useful to reduce typing.
于 2013-07-09T15:51:04.310 回答
7

在 Ubuntu Server 12.04 上,我在从源代码(Python3.4)安装 Python 版本后遇到了这个问题。

这里的一些评论建议安装 Ipython,我想提一下,即使使用 Ipython,我也有相同的行为。据我所知,这是一个 readline 问题。

对于 Ubuntu 12.04 服务器,我必须安装 Python libncurses-devlibreadline-dev然后从源代码安装 Python 才能启用向上历史(readline)行为。我几乎是这样做的:

sudo apt-get install libncurses-dev libreadline-dev

之后,我删除了之前安装的 Python(不是 SYSTEM PYTHON,我从源代码安装的那个!)并从源代码重新安装它,一切都按预期工作。

我不必使用 pip 安装任何东西或编辑 .pythonstartup。

于 2014-09-19T21:39:11.453 回答
7

Ctrl+p 是向上箭头的正常选择。确保在 Python 构建中启用了 gnu readline。

于 2010-11-27T03:26:56.063 回答
7

ALT + p 在 Windows 中的 Enthought Python 上为我工作。

于 2012-10-03T03:28:56.757 回答
7

默认情况下,上一个命令使用 ALT+p,您可以在 IDLE GUI >> OPtions >> Configure IDLE >>Key >>Custom Key Binding 中改为 Up-Arrow 不需要运行自定义脚本,除了 readlines 模块不需要在 Windows 中运行。希望有帮助。:)

于 2016-09-04T20:54:12.983 回答
4

在 CentOS 上,我通过

yum install readline-devel

然后重新编译python 3.4。

在 OpenSUSE 上,我通过

pip3 install readline

参考这个答案:https ://stackoverflow.com/a/26356378/2817654 。也许“pip3 install readline”是一个通用的解决方案。还没有在我的 CentOS 上尝试过。

于 2015-01-24T22:48:22.227 回答
4

我发现我在下面复制的信息回答了这个问题

使自己适应 IDLE:如果您只是将光标放在要重复的上一个命令上,然后按“输入”,则不是按向上箭头返回上一个命令,而是在当前命令提示符下重复该命令。再次按回车,命令被执行。

强制 IDLE 适应您:如果您坚持让 IDLE 命令提示符窗口中的箭头键与其他命令提示符中的箭头键一样工作,您可以这样做。转到“选项”菜单,选择“配置空闲”,然后选择“键”。将与“上一个命令”和“下一个命令”操作关联的键分别更改为向上箭头和向下箭头。

资源

于 2017-03-31T12:14:48.473 回答
3

在我的 mac os python3 中你可以使用: control+p early command contrlo+n next command

于 2016-11-21T13:15:04.130 回答
2
alt+p  
go into options tab
configure idle
Keys

在下面history-previous查找命令,您可以在此处将其更改为您更喜欢的内容。

于 2012-11-12T01:21:54.800 回答
2

我不明白为什么有这么长的解释。您所要做的就是安装pyreadline包:

pip install pyreadline

sudo  port install py-readline (on Mac)

(假设您已经安装了PIP。)

于 2013-12-21T11:34:24.303 回答
2

您不需要像 pyfunc 对 OSX 的回答这样的自定义脚本(至少在小牛上)。在 Idle 中,单击 Idle -> Preferences -> Keys,找到“history-next”和“history-previous”,然后将它们保留为默认键盘快捷键或根据典型的预期终端行为分配“向上箭头”和“向下箭头” .

这是在 OSX Mavericks 的空闲 2.7 上。

于 2014-10-01T09:29:18.423 回答
2

使用箭头键转到命令的开头并按 Enter 将其复制为当前命令。

然后只需按回车即可再次运行它。

于 2018-07-24T14:59:16.263 回答
2

如果你使用 Debian Jessie 运行这个来修复你的系统安装2.7.9

sudo apt-get install libncurses5-dev libncursesw5-dev

要修复我使用pyenv3.5.2安装的其他安装:

pip install readline

资料来源:

[1] https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora/

[2] https://github.com/yyuu/pyenv/issues/240

[3] https://stackoverflow.com/a/40229934/332788

于 2016-11-26T20:14:58.730 回答
1

Ipython 并非总是如此……我非常喜欢它,但是如果您尝试使用 ipython 运行 Django shell。类似的东西>>>

ipython manage.py shell

如果您使用 virtualenv,它将无法正常工作。Django 需要一些特殊的包含,如果您启动 ipython,这些包含不存在,因为它启动默认系统 python,但不是虚拟的。

于 2011-07-10T12:36:05.407 回答
1

当您运行python script.pyvs 只是python为了进入交互式 shell 时,可能会发生这种情况,以及 readline 被禁用的其他原因。

尝试:

import readline
于 2013-04-03T18:53:50.877 回答
1

向上箭头仅适用于 Python 命令行。

在 IDLE (Python GUI) 中,默认值为: Alt-p :检索与您键入的内容匹配的先前命令。Alt-n : 检索下一个... 例如,在 Python 2.7.9 中,您可以看到/更改操作键选择:选项 -> 配置空闲 -> (Tab)键

于 2015-05-11T17:23:36.260 回答
1

要在 python 中重复最后一个命令,您可以<Alt + n>在 windows中使用

于 2020-05-06T07:36:23.417 回答
1

在带有 Python 2.x 的 Mac 上

➜ ~ brew install rlwrap

从 rlwrap 开始

➜ ~ rlwrap python

于 2017-07-20T00:58:22.780 回答
1

对于 python 3.5 的 anaconda,我需要安装ncurses

conda install ncurses

安装选项卡完成后ncurses,历史记录和通过左右箭头导航在交互式 shell 中工作。

于 2016-08-23T07:47:56.547 回答
0

如果使用 MacOSX,按control p向上循环和control n向下循环。我正在使用 IDLE Python 3.4.1 Shell。

于 2014-08-11T04:23:52.193 回答
0

向上箭头也适用于我。而且我认为您不需要为 python 内置命令行安装 Readline 模块。你应该尝试 Ipython 来检查。或者可能是您的键盘映射的问题。

于 2010-11-27T03:14:15.923 回答
0

它是 python 3.4 IDEL 中 Mac os 中的 control + p

于 2015-07-30T18:21:38.093 回答
0

在 Ubuntu 16.04 上,在将 Python 从预加载的 3.5 升级到3.7 版本后,我遇到了同样的问题 source code。正如@erewok 建议的那样,我做到了

sudo apt-get install libncurses-dev libreadline-dev

其次: sudo make install 之后,向上箭头键起作用。不确定需要哪个模块来解决问题或两者兼而有之,但如果没有“make install”,则没有一个可以工作。在最初的制作过程中,有一些危险信号错误,但被忽略并完成了构建。这一次,似乎没有任何错误。

于 2018-08-25T02:52:59.563 回答