Наблюдение символов ESC при нажатии клавиш со стрелками в оболочке Python

Попробуйте следующее:

a = [1, 2, 3]
b = [{:item => 'apple', :quantity => 92}, {:item => 'banana', :quantity => 43}, {:item => 'kiwi', :quantity => 55}]

a.each_with_index do |a_value, i| 
  puts "#{a_value}. #{b[i][:item]} #{b[i][:quantity]}"
end

это выдаст:

1. apple 92
2. banana 43
3. kiwi 55

ИЛИ, если вы хотите иметь вывод наподобие

1. apple 92 2. banana 43 3. kiwi 55

, вы можете использовать карта с индексом

output = a.map.with_index do |a_value, i| 
  "#{a_value}. #{b[i][:item]} #{b[i][:quantity]}"
end.join(' ')
puts output
175
задан Braiam 8 March 2015 в 19:10
поделиться

7 ответов

Похоже, строка чтения не включена. Проверьте, определена ли переменная PYTHONSTARTUP , для меня она указывает на / etc / pythonstart , и этот файл выполняется процессом python перед переходом в интерактивный режим, что настраивает обработку строки чтения / истории.

Благодаря @chown вот документация по этому поводу: http://docs.python.org/2/tutorial/interactive.html

36
ответ дан 23 November 2019 в 20:26
поделиться

На MacOsx я зафиксировал это путем переустановки readline

brew reinstall readline
0
ответ дан 23 November 2019 в 20:26
поделиться

Ни один из этих ответов не работал на меня на двух других версиях Ubuntu. То, что работало на меня, но не является истинной фиксацией, переносит мой код Python в вызов к rlwrap (доступный в репозиториях человечности):

rlwrap python mycode.py

0
ответ дан 23 November 2019 в 20:26
поделиться

Как ваша переменная env $ TERM установлена ​​[a], когда все работает нормально, и [b], когда нет? Параметры Env часто являются ключом к таким проблемам.

0
ответ дан 23 November 2019 в 20:26
поделиться

Вы пробовали использовать другой SSH-клиент? Некоторые клиенты SSH имеют специальные встроенные сопоставления клавиш для различных удаленных процессов. Я много раз сталкивался с этим с emacs.

Какой клиент вы используете? Я бы рекомендовал попробовать Putty и SecureCRT, чтобы сравнить их поведение.

1
ответ дан 23 November 2019 в 20:26
поделиться

Вы вызывали ssh с параметром -t , чтобы указать ssh выделить для вас виртуальный терминал?

На странице руководства:

-t
Принудительное выделение псевдо-tty. Это может использоваться для выполнения произвольных экранных программ на удаленном компьютере, что может быть очень полезно, например, при реализации служб меню. Множественные параметры -t принудительно выделяют tty, даже если ssh не имеет локального tty.

Кроме того, вам также может потребоваться правильно установить переменную среды TERM на сервере, как это предлагается в другом сообщении.

2
ответ дан 23 November 2019 в 20:26
поделиться
  1. установить пакет readline-devel.
  2. перекомпилировать python с модулем readline
  3. Bingo!
15
ответ дан 23 November 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: