如何重复上一个命令?通常的键: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
>>>
答案 0 :(得分:151)
在IDLE中,转到选项 - &gt;配置IDLE - &gt;键和那里选择history-next然后选择history-previous来更改键。
然后单击“获取选择新键”,您就可以选择所需的任何组合键。
答案 1 :(得分:49)
我使用以下命令在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。
所需模块:
答案 2 :(得分:44)
Alt + p用于来自histroy的上一个命令, Alt + n用于历史记录中的下一个命令。
这是默认配置,您可以根据自己的偏好更改这些键快捷键 - 选项 - &gt;配置IDLE。
答案 3 :(得分:16)
你没有具体说明哪个口译员。假设你正在使用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.
答案 4 :(得分:7)
Ctrl + p是向上箭头的常规替代品。确保在Python构建中启用了gnu readline。
答案 5 :(得分:6)
默认情况下,对于上一个命令使用ALT + p,您可以在IDLE GUi&gt;&gt;中更改为Up-Arrow。选项&gt;&gt;配置IDLE&gt;&gt;键&gt;&gt;自定义键绑定 除了readlines模块在Windows中运行之外,运行自定义脚本不是必需的。 希望有所帮助。 :)
答案 6 :(得分:5)
ALT + p适用于Windows中的Enthought Python。
答案 7 :(得分:5)
在Ubuntu Server 12.04上,从源代码(Python3.4)安装Python版本后我遇到了这个问题。
这里的一些评论建议安装Ipython,我想提一下,即使使用Ipython,我也有同样的行为。据我所知,这是一个readline问题。
对于Ubuntu 12.04服务器,我必须安装libncurses-dev
和libreadline-dev
,然后从源安装Python以启用up-history(readline)行为。我差不多这样做了:
sudo apt-get install libncurses-dev libreadline-dev
之后,我删除了之前安装的Python(不是系统PYTHON,我从源代码安装的那个!)并从源代码重新安装它,一切都按预期工作。
我没有用pip安装任何东西或编辑.pythonstartup。
答案 8 :(得分:3)
在CentOS上,我通过
解决了这个问题yum install readline-devel
然后重新编译python 3.4。
在OpenSUSE上,我通过
解决了这个问题pip3 install readline
参考这个答案:https://stackoverflow.com/a/26356378/2817654。 也许&#34; pip3安装readline&#34;是一般解决方案。 Haven没试过我的CentOS。
答案 9 :(得分:3)
在我的mac os python3中 您可以使用: 控制+ p早期命令 控制下一个命令
答案 10 :(得分:2)
alt+p
go into options tab
configure idle
Keys
在history-previous
下查看命令,您可以在此处将其更改为您喜欢的内容。
答案 11 :(得分:2)
我不明白为什么会有这么多长篇解释。您所要做的就是安装pyreadline包:
pip install py-readline
sudo port install py-readline(在Mac上)
(假设您已经安装了PIP。)
答案 12 :(得分:2)
我发现下面复制的信息回答了问题
让自己适应IDLE:如果你只是将光标放在你要重复的上一个命令然后按“enter”,那么该命令将在当前重复执行,而不是按向上箭头来恢复上一个命令。命令提示符。再次按Enter键,命令将被执行。
强制IDLE适应您自己:如果您坚持让IDLE命令提示符窗口中的箭头键与其他命令提示符中的箭头键一样,则可以执行此操作。转到“选项”菜单,选择“配置IDLE”,然后选择“键”。将与“上一个命令”和“下一个命令”操作关联的键分别更改为向上箭头和向下箭头。
答案 13 :(得分:2)
你不需要像pyfunc那样的自定义脚本来回答OSX(至少在小牛队中)。在空闲时单击空闲 - &gt;偏好 - &gt;键,找到&#34; history-next&#34;和&#34; history-previous&#34;,并将它们保留为默认键盘快捷键或指定&#34;向上箭头&#34;和#34;向下箭头&#34;每个典型的预期终端行为。
这是OSX Mavericks上的Idle 2.7。
答案 14 :(得分:1)
使用箭头键转到命令的开头,然后按Enter键会将其复制为当前命令。
然后只需按Enter键即可再次运行它。
答案 15 :(得分:1)
在Mac上使用Python 2.x
➜ ~ brew install rlwrap
从rlwrap开始
➜ ~ rlwrap python
答案 16 :(得分:1)
要在python中重复最后一条命令,可以在Windows中使用<Alt + n>
答案 17 :(得分:1)
如果你使用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/
答案 18 :(得分:1)
对于anaconda for python 3.5,我需要安装ncurses
conda install ncurses
在ncurses
安装选项卡完成后,历史记录以及通过左右箭头导航在交互式shell中工作。
答案 19 :(得分:1)
向上箭头仅适用于Python命令行。
在IDLE(Python GUI)中,默认值为: Alt-p:检索与您键入的内容匹配的上一个命令。 Alt-n:接下来检索... 例如,在Python 2.7.9中,您可以看到/更改操作键选择: 选项 - &gt;配置IDLE - &gt; (Tab)键
答案 20 :(得分:1)
当您运行python script.py
vs python
进入交互式shell时,可能会发生这种情况,以及禁用readline的其他原因。
尝试:
import readline
答案 21 :(得分:1)
Ipython并非总是如此...我非常喜欢它,但如果你尝试用ipython运行Django shell。像&gt;&gt;&gt;
之类的东西ipython manage.py shell
如果使用virtualenv,它确实无法正常工作。 Django需要一些特殊的包含,如果你启动ipython就不存在,因为它启动默认的系统python,但不是虚拟的。
答案 22 :(得分:0)
在python 3.4 IDEL中的Mac OS中是control + p
答案 23 :(得分:0)
如果使用MacOSX,请按control p
进行循环,然后按control n
进行循环。我正在使用IDLE Python 3.4.1 Shell。
答案 24 :(得分:0)
在Ubuntu 16.04上,将Python从预加载的3.5升级到version 3.7 from source code后,我遇到了同样的问题。 正如@erewok所建议的,我做到了
sudo apt-get install libncurses-dev libreadline-dev
后跟:
sudo make install
之后,向上箭头键起作用。不知道需要哪个模块来解决此问题,或者不能同时解决这两个问题,但是如果没有“ make install”,则任何模块都无法工作。在最初的制作过程中,出现了一些红旗错误,但忽略并完成了构建。这次似乎没有任何错误。
答案 25 :(得分:0)
向上箭头也适合我。 我认为您不需要为python内置命令行安装Readline模块。 你应该尝试Ipython来检查。 或者这可能是你的键盘图的问题。