如何重复在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上的相关信息。;
所需模块:
在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-dev
和libreadline-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 p
键control 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/
我发现我在下面复制的信息回答了这个问题
适应自己的空闲状态:如果你只要把光标放在你想要重复的上一个命令上,然后按下“enter”,那么在当前的命令提示符下将重复执行该命令,而不是按下向上箭头来恢复以前的命令。 再次按下Enter,命令就会被执行。
强制IDLE自己适应你:如果你坚持让IDLE命令提示符窗口中的箭头键像其他命令提示符那样工作,你可以这样做。 进入“选项”菜单,select“configuration空闲”,然后“按键”。 将与“上一个命令”和“下一个命令”相关联的键分别改为向上箭头和向下箭头。
资源
在Mac上用Python 2.x
➜ ~ brew install rlwrap
从rlwrap开始
➜ ~ rlwrap python