问题:如何在python解释器外壳中重复上一条命令?
如何重复上一条命令?通常的键:向上,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
>>>
How do I repeat the last command? The usual keys: Up, Ctrl+Up, Alt-p don’t work. They produce nonsensical characters.
(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
I use the following to enable history on python shell.
This is my .pythonstartup file . PYTHONSTARTUP environment variable is set to this file 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
You will need to have the modules readline, rlcompleter to enable this.
Check out the info on this at : http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP.
Modules required:
- http://docs.python.org/library/readline.html
- http://docs.python.org/library/rlcompleter.html
回答 1
在“ IDLE”中,转到“选项”->“配置IDLE”->“密钥”,然后选择“ history-next”和“ history-previous”来更改密钥。
然后单击“获取新的按键选择”,您就可以选择想要的任何按键组合。
In IDLE, go to Options -> Configure IDLE -> Keys and there select history-next and then history-previous to change the keys.
Then click on Get New Keys for Selection and you are ready to choose whatever key combination you want.
回答 2
Alt + p表示历史记录中的上一个命令,Alt + n表示历史记录中的下一个命令。
这是默认配置,您可以根据需要从选项->配置IDLE更改这些快捷键。
Alt + p for previous command from histroy,
Alt + n for next command from history.
This is default configure, and you can change these key shortcut at your preference from Options -> Configure IDLE.
回答 3
您没有指定哪个环境。假设您正在使用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.
You didn’t specify which environment. Assuming you are using IDLE.
From IDLE documentation:
Command history:
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
ALT + p在Windows上的Enthought Python上对我有用。
ALT + p works for me on Enthought Python in Windows.
回答 5
Ctrl + p是向上箭头的常规替代方法。确保在Python版本中启用了gnu readline。
Ctrl+p is the normal alternative to the up arrow. Make sure you have gnu readline enabled in your Python build.
回答 6
在Ubuntu Server 12.04上,从源(Python3.4)安装了一个版本的Python之后,出现了这个问题。
这里的一些评论建议安装Ipython,我想提一下,即使使用Ipython,我的行为也相同。据我所知,这是一个readline问题。
为Ubuntu 12.04服务器,我必须安装libncurses-dev
并libreadline-dev
再启用从源代码安装Python达历史(readline的)行为。我几乎是这样做的:
sudo apt-get install libncurses-dev libreadline-dev
之后,我删除了先前安装的Python(不是SYSTEM PYTHON,而是我从源代码安装的Python!),然后从源代码重新安装了它,一切正常。
我不必使用pip安装任何东西或编辑.pythonstartup。
On Ubuntu Server 12.04, I had this problem after installing a version of Python from source (Python3.4).
Some of the comments here recommend installing Ipython and I want to mention that I have the same behavior even with Ipython. From what I can tell, this is a readline problem.
For Ubuntu 12.04 server, I had to install libncurses-dev
and libreadline-dev
and then install Python from source for up-history (readline) behavior to be enabled. I pretty much did this:
sudo apt-get install libncurses-dev libreadline-dev
After that, I deleted the previously installed Python (NOT THE SYSTEM PYTHON, the one I had installed from source!) and reinstalled it from source and everything worked as expected.
I did not have to install anything with pip or edit .pythonstartup.
回答 7
默认情况下,对上一个命令使用ALT + p,您可以改为在IDLE GUi >>选项>>配置IDLE >>键>>自定义键绑定中向上箭头无需运行自定义脚本,除了readlines模块不需要在Windows中运行。希望能有所帮助。:)
By default use ALT+p for previous command, you can change to Up-Arrow instead in IDLE GUi >> OPtions >> Configure IDLE >>Key >>Custom Key Binding
It is not necesary to run a custom script, besides readlines module doesnt run in Windows.
Hope That Help. :)
回答 8
On CentOS, I fix this by
yum install readline-devel
and then recompile python 3.4.
On OpenSUSE, I fix this by
pip3 install readline
Referring to this answer:https://stackoverflow.com/a/26356378/2817654.
Perhaps “pip3 install readline” is a general solution. Haven’t tried on my CentOS.
回答 9
在我的Mac OS python3中,您可以使用:control + p early命令contrlo + n next命令
In my mac os python3
you can use:
control+p early command
contrlo+n next command
回答 10
我发现我在下面复制的信息回答了这个问题
使自己适应IDLE:如果您只是将光标放在要重复的上一个命令上,然后按“ enter”,则无需点击向上箭头来返回上一个命令,该命令将在当前命令提示符下重复执行。再次按Enter键,命令将被执行。
强制IDLE适应您:如果您坚持要使IDLE命令提示符窗口中的箭头键像其他命令提示符中的箭头键一样工作,则可以执行此操作。转到“选项”菜单,选择“配置IDLE”,然后选择“密钥”。将与“上一个命令”和“下一个命令”关联的键分别更改为向上箭头和向下箭头。
资源
I find information that I copied below answer the question
Adapt yourself to IDLE: Instead of hitting the up arrow to bring back a previous command, if you just put your cursor on the previous command you want to repeat and then press “enter”, that command will be repeated at the current command prompt. Press enter again, and the command gets executed.
Force IDLE to adapt itself to you: If you insist on making the arrow keys in the IDLE command prompt window work like those in every other command prompt, you can do this. Go to the “Options” menu, select “Configure IDLE”, and then “Keys”. Changing the key that is associated with the “previous command” and “next command” actions to be the up arrow, and down arrow, respectively.
source
回答 11
alt+p
go into options tab
configure idle
Keys
在下面history-previous
查找该命令,您可以在此处将其更改为更喜欢的命令。
alt+p
go into options tab
configure idle
Keys
look under history-previous
for the command, you can change it to something you like better once here.
回答 12
我不明白为什么会有这么长的解释。您所要做的就是安装pyreadline软件包,其中包括:
pip install py-readline
sudo端口安装py-readline(在Mac上)
(假设您已经安装了PIP。)
I don’t understand why there are so many long explanations about this. All you have to do is install the pyreadline package with:
pip install py-readline
sudo port install py-readline (on Mac)
(Assuming you have already installed PIP.)
回答 13
对于OSX,您不需要像pyfunc的答案这样的自定义脚本(至少在特立独行的情况下)。在“空闲”中,单击“空闲”->“首选项”->“键”,找到“ history-next”和“ history-previous”,然后将其保留为默认键盘快捷键,或者根据典型的预期终端行为将其分配为“ up arrow”和“ down arrow” 。
这是在OSX Mavericks的闲置2.7上。
You don’t need a custom script like pyfunc’s answer for OSX (at least on mavericks). In Idle click on Idle -> Preferences -> Keys, locate “history-next” and “history-previous”, and either leave them with their default keyboard shortcut or assign “up arrow” and “down arrow” per typical expected terminal behavior.
This is on Idle 2.7 on OSX Mavericks.
回答 14
回答 15
使用箭头键转到命令的开头,然后按Enter键会将其复制为当前命令。
然后只需按Enter键即可再次运行它。
Using arrow keys to go to the start of the command and hitting enter copies it as the current command.
Then just hit enter to run it again.
回答 16
Ipython并非总是如此…我非常喜欢它,但是如果您尝试使用ipython运行Django shell。像>>>
ipython manage.py shell
如果使用virtualenv,它将无法正常工作。Django需要一些特殊的包含,如果您启动ipython则没有,因为它会启动默认的系统python,但不是虚拟的。
Ipython isn’t allways the way… I like it pretty much, but if you try run Django shell with ipython. Something like>>>
ipython manage.py shell
it does’n work correctly if you use virtualenv. Django needs some special includes which aren’t there if you start ipython, because it starts default system python, but not that virtual.
回答 17
当您运行python script.py
vs只是python
进入交互式shell时,可能会发生这种情况,其中包括禁用readline的其他原因。
尝试:
import readline
This can happen when you run python script.py
vs just python
to enter the interactive shell, among other reasons for readline being disabled.
Try:
import readline
回答 18
向上箭头键仅在Python命令行中有效。
在IDLE(Python GUI)中,默认值为:Alt-p:检索与您键入的内容匹配的先前命令。Alt-n:下一次检索…例如,在Python 2.7.9中,您可以查看/更改操作键,选择:选项->配置IDLE->(制表符)键
Up Arrow works only in Python command line.
In IDLE (Python GUI) the defaults are:
Alt-p : retrieves previous command matching what you have typed.
Alt-n : retrieves next…
In Python 2.7.9 for example, you can see/change the Action Keys selecting:
Options -> Configure IDLE -> (Tab) Keys
回答 19
对于适用于python 3.5的anaconda,我需要安装 ncurses
conda install ncurses
后ncurses
安装标签完整,历史,并通过左右箭头导航在交互式shell工作。
For anaconda for python 3.5, I needed to install ncurses
conda install ncurses
After the ncurses
install tab complete, history, and navigating via left and right arrows worked in the interactive shell.
回答 20
在使用Python 2.x的Mac上
➜ ~ brew install rlwrap
从rlwrap开始
➜ ~ rlwrap python
On Mac with Python 2.x
➜ ~ brew install rlwrap
Start with rlwrap
➜ ~ rlwrap python
回答 21
要在python中重复最后一个命令,可以<Alt + n>
在Windows中使用
For repeating the last command in python, you can use <Alt + n>
in windows
回答 22
向上箭头也对我有用。而且我不认为您需要为python内置命令行安装Readline模块。你应该尝试Ipython检查。也许这是键盘映射的问题。
Up arrow works for me too.
And i don’t think you need to install the Readline module for python builtin commandline.
U should try Ipython to check.
Or maybe it’s the problem of your keybord map.
回答 23
如果使用MacOSX,请按control p
向上或control n
向下循环。我正在使用IDLE Python 3.4.1 Shell。
If using MacOSX, press control p
to cycle up and control n
to cycle down. I am using IDLE Python 3.4.1 Shell.
回答 24
在python 3.4 IDEL的Mac OS中是control + p
it is control + p in Mac os in python 3.4 IDEL
回答 25
在Ubuntu 16.04上,将Python从预加载的3.5 从源代码升级到3.7版后,我遇到了同样的问题。正如@erewok建议的那样,我做到了
sudo apt-get install libncurses-dev libreadline-dev
然后:
sudo make install
在此之后,向上箭头键起作用了。不知道需要哪个模块来解决此问题,或者不能同时解决这两个问题,但是如果没有“ make install”,则任何模块都无法工作。在最初的制作过程中,出现了一些危险信号错误,但忽略并完成了构建。这次似乎没有任何错误。
On Ubuntu 16.04, I had the same problem after upgrading Python from the preloaded 3.5 to version 3.7 from source code.
As @erewok suggested, I did
sudo apt-get install libncurses-dev libreadline-dev
followed by:
sudo make install
After that, the arrow-up key worked. Not sure which module is required to fix the problem or both, but without “make install”, none would work. During initial make, there were some red-flag errors, but ignored and completed the build. This time, there didn’t seem to have any errors.