如何重复在Python解释器shell的最后一个命令?

我如何重复上一个命令? 常用的键:向上,Ctrl +向上,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 >>> 

我使用以下在python shell上启用历史logging。

这是我的.pythonstartup文件。 PYTHONSTARTUP环境variables被设置为这个文件path。

 # 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

在IDLE中,进入选项 – >configuration空闲 – >键,然后select历史 – 下一步,然后是历史 – 上一步更改密钥。

然后点击Get New Keys for Selection,您就可以select任何您想要的组合键。

Alt + P表示历史命令,Alt + n表示历史命令。

这是默认configuration,您可以从选项 – >configurationIDLE,在您的首选项中更改这些快捷键。

你没有具体哪个翻译。 假设你正在使用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. 

Ctrl + p是向上箭头的正常替代方法。 确保你的Python版本中启用了gnu readline。

在Windows中的Enthought Python中,ALT + p适用于我。

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

这里的一些评论build议安装Ipython,我想提一下,即使使用Ipython,我也有同样的行为。 从我可以告诉,这是一个readline问题。

对于Ubuntu 12.04服务器,我必须安装libncurses-devlibreadline-dev ,然后从源代码安装启用了up-history(readline)行为的Python。 我几乎这样做了:

 sudo apt-get install libncurses-dev libreadline-dev 

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

我不需要用pip或编辑.pythonstartup来安装任何东西。

 alt+p go into options tab configure idle Keys 

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

我不明白为什么有这么长时间的解释。 所有你需要做的是安装pyreadline包:

 pip install py-readline 

sudo port安装py-readline(在Mac上)

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

在CentOS上,我解决了这个问题

 yum install readline-devel 

然后重新编译python 3.4。

在OpenSUSE上,我解决了这个问题

 pip3 install readline 

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

在我的mac os python3中,可以使用:control + p early命令contrlo + n next命令

Ipython并不总是这样…我非常喜欢它,但是如果你尝试用ipython运行Django shell。 像>>>

 ipython manage.py shell 

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

当你运行python script.py vs python来进入交互式shell,以及readline被禁用的其他原因时,就会发生这种情况。

尝试:

 import readline 

你不需要像pyfunc的OSX的答案(至less在特拉维夫)的自定义脚本。 在空闲状态下,点击空闲 – >首选项 – >按键,find“历史 – 下一个”和“历史 – 上一个”,并保留它们的默认键盘快捷方式或者分配“向上箭头”和“向下箭头” 。

这是在OSX小牛的闲置2.7。

向上箭头只能在Python命令行中使用。

在IDLE(Python GUI)中,缺省值是:Alt-p:检索与您input内容相匹配的以前的命令。 Alt-n:检索下一个…例如,在Python 2.7.9中,可以看到/更改操作键select:选项 – >configuration空闲 – >(Tab)键

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

 conda install ncurses 

ncurses安装选项卡完成后,历史logging以及在交互式shell中通过左右箭头进行导航。

默认情况下,对于上一个命令,可以使用ALT + p,而不是在IDLE GUI >> OPTIONS >>configurationIDLE >>键>>自定义键绑定除了readlines模块不需要运行自定义脚本在Windows中运行。 希望这个帮助。 🙂

向上箭头也适用于我。 我不认为你需要安装Python内置命令行的Readline模块。 你应该试试Ipython来检查。 或者也许这是你的钥匙圈地图的问题。

如果使用MacOSX,按control pcontrol p循环,并control n循环。 我正在使用IDLE Python 3.4.1 Shell。

它是在python 3.4 IDEL的Mac OS中的control + p

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

 sudo apt-get install libncurses5-dev libncursesw5-dev 

要解决我用pyenv安装的其他3.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

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

适应自己的空闲状态:如果你只要把光标放在你想要重复的上一个命令上,然后按下“enter”,那么在当前的命令提示符下将重复执行该命令,而不是按下向上箭头来恢复以前的命令。 再次按下Enter,命令就会被执行。

强制IDLE自己适应你:如果你坚持让IDLE命令提示符窗口中的箭头键像其他命令提示符那样工作,你可以这样做。 进入“选项”菜单,select“configuration空闲”,然后“按键”。 将与“上一个命令”和“下一个命令”相关联的键分别改为向上箭头和向下箭头。

资源

在Mac上用Python 2.x

➜ ~ brew install rlwrap

从rlwrap开始

➜ ~ rlwrap python