Comment répéter la dernière commande dans interpréteur de commandes en Python?

comment répéter la dernière commande? Les touches habituelles: Jusqu', Ctrl+Alt-p ne fonctionnent pas. Ils produisent des caractères absurdes.

(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
>>> 
94
demandé sur vahid-dan 2010-11-27 06:09:39

25 réponses

j'utilise ce qui suit pour activer l'historique sur le shell python.

C'est mon .pythonstartup "151950920 de fichier". La variable d'environnement PYTHONSTARTUP est définie à ce chemin de fichier.

# 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

vous aurez besoin d'avoir les modules readline, rlcompleter pour l'activer.

consultez les informations à ce sujet à : http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP .

Modules requis:

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html
46
répondu pyfunc 2010-11-27 03:41:18

dans IDLE, allez à Options - > Configure IDLE - > Keys et sélectionnez history-next puis history-previous pour changer les clés.

ensuite, cliquez sur Obtenir de nouvelles clés pour la sélection et vous êtes prêt à choisir la combinaison de clés que vous voulez.

134
répondu basak 2016-03-16 21:44:00

Alt + p pour commande précédente de histroy, Alt + n pour la prochaine commande de l'histoire.

c'est configure par défaut, et vous pouvez changer ces raccourcis-clés à votre préférence des Options - > Configure IDLE.

40
répondu frank 2013-07-23 01:24:13

vous n'avez pas précisé quel interprète. En supposant que vous utilisez le ralenti.

de la documentation de ralenti: Historique des commandes:

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.
16
répondu Info5ek 2013-07-09 15:51:04

Ctrl+p est l'alternative normale à la flèche vers le haut. Assurez-vous que gnu readline est activé dans votre construction Python.

7
répondu nmichaels 2010-11-27 03:26:56

par défaut, utilisez ALT+p pour la commande précédente, vous pouvez passer à la flèche du haut à la place dans IDLE GUi > > OPtions > > configurer IDLE > > Key >Custom Key Binding Il n'est pas nécessaire d'exécuter un script personnalisé, de plus le module readlines ne s'exécute pas sous Windows. Espérons Que L'Aide. :)

6
répondu jocmtb 2016-09-04 20:54:12

ALT + p fonctionne pour moi sur Enthought Python dans Windows.

5
répondu Deniss 2012-10-03 03:28:56

sur Ubuntu Server 12.04, j'ai eu ce problème après avoir installé une version de Python à partir de la source (Python3.4).

certains des commentaires ici recommandent l'installation D'Ipython et je tiens à mentionner que j'ai le même comportement même avec Ipython. À partir de ce que je peux dire, c'est un readline problème.

Pour Ubuntu 12.04 server, j'ai dû installer libncurses-dev et libreadline-dev et ensuite installer Python à partir de la source pour le comportement up-history (readline) pour être activé. J'ai à peu près fait ceci:

sudo apt-get install libncurses-dev libreadline-dev

après cela, j'ai supprimé le Python précédemment installé (pas le système PYTHON, celui que j'avais installé à partir de source!) et réinstallé à partir de la source et tout a fonctionné comme prévu.

Je n'ai pas eu à installer quoi que ce soit avec pip ou edit .pythonstartup.

5
répondu erewok 2014-10-10 04:00:34

dans mon mac os python3 vous pouvez utiliser: contrôle+premier commandement contrlo+n commande suivante

3
répondu gkgy 2016-11-21 13:15:04
alt+p  
go into options tab
configure idle
Keys

regardez sous history-previous pour la commande, vous pouvez la changer en quelque chose que vous aimez mieux une fois ici.

2
répondu LakeEffect 2012-11-12 01:39:53

je ne comprends pas pourquoi il y a tant d'explications à ce sujet. Tout ce que vous avez à faire est d'installer le pyreadline paquet avec:

pip install py-readline

sudo port install py-readline (on Mac)

(en supposant que vous avez déjà installé PIP .)

2
répondu not2qubit 2014-05-21 01:07:53

vous n'avez pas besoin d'un script personnalisé comme answer for OSX de pyfunc (au moins sur mavericks). Dans Idle cliquez sur les touches Idle -> Preferences ->, localisez "history-next" et "history-previous", et laissez-les avec leur raccourci clavier par défaut ou assignez "Flèche vers le haut" et "Flèche vers le bas" par le comportement typique attendu du terminal.

C'est sur Idle 2.7 sur OSX Mavericks.

2
répondu AllTradesJack 2014-10-01 09:29:18

sur CentOS, je fixe par

yum install readline-devel

puis recompiler Python 3.4.

Sur OpenSUSE, j'ai corrigé en

pip3 install readline

se référant à cette réponse: https://stackoverflow.com/a/26356378/2817654 . Peut-être que" pip3 install readline " est une solution générale. Je n'ai pas essayé mes CentOS.

2
répondu peter pan gz 2017-05-23 12:18:24

je trouve l'information que j'ai copié ci-dessous répondre à la question

adaptez-vous à IDLE: au lieu de frapper la flèche vers le haut pour ramener une commande précédente, si vous mettez simplement votre curseur sur la commande précédente que vous voulez répéter et puis appuyez sur "enter", cette commande sera répétée à l'invite de commande courante. Appuyez sur Entrée à nouveau, et la commande est exécutée.

force IDLE pour s'adapter à vous: si vous insistez sur faire fonctionner les touches fléchées dans la fenêtre D'invite de commande IDLE comme celles de toutes les autres invite de commande, vous pouvez le faire. Allez dans le menu" Options", sélectionnez" Configurer IDLE", puis"Keys". Modifier la touche associée aux actions "commande précédente" et "commande suivante" pour qu'elle soit respectivement la flèche vers le haut et la flèche vers le bas.

source

2
répondu koliyat9811 2017-03-31 12:23:06

Ipython n'est pas toujours le chemin... Je l'aime bien, mais si vous essayez Django shell avec ipython. Quelque chose comme>>>

ipython manage.py shell

cela ne fonctionne pas correctement si vous utilisez virtualenv. Django a besoin de quelques inclusions spéciales qui ne sont pas présentes si vous démarrez ipython, car il démarre par défaut le système python, mais pas si virtuel.

1
répondu Jazzuell 2011-07-10 12:36:05

cela peut se produire lorsque vous exécutez python script.py vs juste python pour entrer dans le shell interactif, entre autres raisons pour lesquelles readline est désactivé.

, Essayez:

import readline
1
répondu Anuj Gupta 2013-04-03 18:53:50

La Flèche vers le haut ne fonctionne qu'en ligne de commande Python.

in IDLE (Python GUI) les valeurs par défaut sont: Alt-p : renvoie la commande précédente correspondant à ce que vous avez tapé. Alt - n: à suivre... Dans Python 2.7.9 par exemple, vous pouvez voir / Modifier les clés d'Action en sélectionnant: Options - > configurer les touches IDLE - > (Tab)

1
répondu teo 2015-05-11 17:23:36

pour anaconda pour python 3.5, j'ai dû installer ncurses

conda install ncurses

après l'onglet ncurses installer complet, historique, et la navigation par les flèches gauche et droite travaillé dans le shell interactif.

1
répondu Danny Sullivan 2016-08-23 07:47:56

si vous utilisez Debian Jessie exécutez ceci pour corriger l'installation de votre système 2.7.9

sudo apt-get install libncurses5-dev libncursesw5-dev

pour fixer mon autre installation 3.5.2 que j'ai installé avec pyenv :

pip install readline

Sources:

[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

1
répondu aliopi 2018-01-11 17:24:58

la flèche vers le haut fonctionne pour moi aussi. Et je ne pense pas que vous ayez besoin d'installer le module Readline pour Python builtin commandline. Vous devriez essayer Ipython pour vérifier. Ou peut-être que c'est le problème de ta carte de claviers.

0
répondu wliao 2010-11-27 03:14:15

si vous utilisez MacOSX, appuyez sur control p pour effectuer le cycle vers le haut et control n pour effectuer le cycle vers le bas. J'utilise L'interpréteur de commandes IDLE Python 3.4.1.

0
répondu warship 2014-08-11 04:23:52

c'est ctrl + p dans Mac os en python 3.4 IDEL

0
répondu ratzily 2015-07-30 18:21:38

sur Mac avec Python 2.x

➜ ~ brew install rlwrap

Démarrer avec rlwrap

➜ ~ rlwrap python

0
répondu northtree 2017-07-20 00:58:22

en utilisant les touches fléchées pour aller au début de la commande et en appuyant sur enter copie comme la commande courante.

puis appuyez sur Entrée pour le lancer à nouveau.

0
répondu Raja Dorji 2018-07-24 14:59:16

sur Ubuntu 16.04, j'ai eu le même problème après avoir mis à jour Python de la version 3.5 préchargée à version 3.7 à partir du code source . Comme @erewok l'a suggéré, j'ai fait

sudo apt-get install libncurses-dev libreadline-dev

suivi de: sudo make install Après cela, la flèche touche travaillé. Je ne sais pas quel module est nécessaire pour corriger le problème ou les deux, mais sans "make install", aucun ne fonctionnerait. Lors de la fabrication initiale, il y a eu quelques erreurs de signal rouge, mais la construction a été ignorée et terminée. Ce temps, il ne semble pas y avoir d'erreurs.

0
répondu Leon Chang 2018-08-25 02:52:59