Это не решит вашу проблему, но, по крайней мере, я могу ответить на вопрос, который вы задали (Почему):
Стрелка влево вводится в терминал в виде трех символов, ESC, [и D. (Вы можете проверить это, набрав read
и нажав стрелку влево, которая отображает ^[[D
, где ^[
- это как escape-символ отображается).
Каким-то образом irb
поднимает символ ESC, когда это не должно; поэтому ESC завершает поиск по истории, и [D
вводится буквально. Глядя на другие программы, использующие readline, Bash и Python ведут себя корректно, но ledit
(да, неясный - извините ^^) также имеет эту проблему.
Если кто-то не знает решения для этого, единственный обходной путь, о котором я могу подумать, - это нажать ESC вместо клавиши со стрелкой для выхода из поиска в истории. Или нажмите Enter, если вам не нужно редактировать, конечно.