143 votes

Comment répéter la dernière commande dans le shell de l'interpréteur python ?

Comment puis-je répéter la dernière commande ? Les touches habituelles : Up, Ctrl+Up, Alt-p ne fonctionnent pas. Elles 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
>>>

0 votes

La flèche vers le haut fonctionne correctement pour moi (Ubuntu), c'est bizarre.

3 votes

Idem, la flèche vers le haut fonctionne pour moi sous Windows. Quel shell utilisez-vous, et quel programme de terminal sur quel OS ?

0 votes

J'ai installé une installation séparée de python 2.6.6 sur Fedora 13, j'ai lancé virtualenv, en utilisant le shell python par défaut, sur gnome-terminal

177voto

basak Points 246

Dans IDLE, allez dans Options -> Configurer IDLE -> Clés et là, sélectionnez historique-suivant puis historique-précédent pour changer les clés.

Cliquez ensuite sur Get New Keys for Selection et vous êtes prêt à choisir la combinaison de touches que vous voulez.

4 votes

Pour les chercheurs, cela fonctionne aussi dans Linux Mint 17 Cinnamon.

4 votes

Fonctionne pour Windows 10, python 3.6.1 également. Merci beaucoup, c'est propre et clair, particulièrement utile pour les nouveaux apprenants.

1 votes

Réponse la plus appropriée. Aurait dû être choisie comme la bonne.

65voto

pyfunc Points 31088

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

C'est mon .pythonstartup fichier . La variable d'environnement PYTHONSTARTUP est définie sur 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 devrez avoir les modules readline, rlcompleter pour l'activer.

Consultez les informations à ce sujet sur le site : 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

0 votes

@user496852 : Il suffit de définir la variable env. PYTHONSTARTUP sur le chemin du fichier contenant le code ci-dessus. Vérifiez également si vous avez les modules requis.

7 votes

Ce n'est pas nécessaire, il suffit de suivre les instructions de la réponse de basak et d'assigner les liaisons de touches.

1 votes

Une surenchère. Il suffit de faire alt+p

50voto

frank Points 61

Alt + p pour la commande précédente dans l'historique, Alt + n pour la commande suivante de l'historique.

Il s'agit de la configuration par défaut, et vous pouvez modifier ces raccourcis clavier selon vos préférences dans Options -> Configurer IDLE.

3 votes

Cela s'appelle histoire-suivante / histoire-précédente

19voto

user1800340 Points 314

Vous n'avez pas précisé quel environnement. En supposant que vous utilisez IDLE.

Extrait de la documentation IDLE : 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.

0 votes

1 votes

C'est la solution que je recherche dans IDLE. La flèche vers le haut fonctionne sur l'interpréteur python lancé depuis le shell bash.

7voto

nmichaels Points 21955

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

1 votes

Cela demande si je veux imprimer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X