Как повторить последнюю команду в оболочке интерпретатора Python? - PullRequest
116 голосов
/ 27 ноября 2010

Как мне повторить последнюю команду? Обычные клавиши: 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
>>> 

Ответы [ 25 ]

154 голосов
/ 25 сентября 2012

В режиме IDLE перейдите в Options -> Configure IDLE -> Keys и там выберите history-next и затем history-previous, чтобы изменить ключи.

Затем нажмите «Получить новые ключи для выбора», и вы готовы выбрать любую комбинацию клавиш, какую пожелаете.

50 голосов
/ 27 ноября 2010

Я использую следующее для включения истории в оболочке Python.

Это мой .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.

Необходимые модули:

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html
44 голосов
/ 23 июля 2013

Alt + p для предыдущей команды из истории, Alt + n для следующей команды из истории.

Это конфигурация по умолчанию, и вы можете изменить эти сочетания клавиш по своему усмотрению из Параметры -> Настроить IDLE.

16 голосов
/ 09 июля 2013

Вы не указали, какой переводчик.Предполагается, что вы используете 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.
7 голосов
/ 04 сентября 2016

По умолчанию используйте ALT + p для предыдущей команды, вместо этого вы можете изменить на Стрелку вверх в GUI IDLE >> ОПЦИИ >> Настроить IDLE >> Ключ >> Пользовательская привязка клавиш Не нужно запускать пользовательский сценарий, кромеМодуль readlines не работает в Windows.Надеюсь, что помощь.:)

7 голосов
/ 27 ноября 2010

Ctrl + p - нормальная альтернатива стрелке вверх.Убедитесь, что в вашей сборке Python включена поддержка чтения строк gnu.

5 голосов
/ 03 октября 2012

ALT + p работает для меня на Enthought Python в Windows.

5 голосов
/ 20 сентября 2014

На Ubuntu Server 12.04 у меня возникла эта проблема после установки версии Python из исходного кода (Python3.4).

В некоторых комментариях здесь рекомендуется установить Ipython, и я хочу отметить, что у меня такое же поведение даже с Ipython. Из того, что я могу сказать, это проблема readline.

Для сервера Ubuntu 12.04 мне пришлось установить libncurses-dev и libreadline-dev, а затем установить Python из исходного кода, чтобы активировать поведение обновления (readline). Я в значительной степени сделал это:

sudo apt-get install libncurses-dev libreadline-dev

После этого я удалил ранее установленный Python (НЕ СИСТЕМНЫЙ PYTHON, тот, который я установил из исходного кода!) И переустановил его из исходного кода, и все заработало как положено.

Мне не нужно было ничего устанавливать с помощью pip или редактировать .pythonstartup.

3 голосов
/ 21 ноября 2016

В моем Mac OS Python3 вы можете использовать: control + p ранняя команда contrlo + n следующая команда

3 голосов
/ 25 января 2015

На CentOS я исправляю это

yum install readline-devel

и затем перекомпилировать python 3.4.

В OpenSUSE я исправляю это

pip3 install readline

Ссылаясь на этот ответ: https://stackoverflow.com/a/26356378/2817654. Возможно, «pip3 install readline» является общим решением. Не пробовал на моем CentOS.

...