Как избежать повторения новой строки при чтении пользовательского ввода?

Я пишу на Ruby программу, похожую на curses, и использую escape-символы stty и ansi для достижения того, чего хочу. Моя проблема возникает, когда я хочу получить ввод пользователя. Как и многие консольные программы, я хочу, чтобы пользовательский ввод вводился снизу терминала.

Таким образом, я помещаю курсор в нижнюю часть экрана и вызываю Readline.readline (или любой другой метод для получения пользовательского ввода). Как обычно, он читает все, пока я не нажму «Return», и не будет напечатана новая строка. Поскольку курсор находится на последней строке терминала, он прокручивает одну строку, что приводит к беспорядку на экране.

Как я могу этого избежать? Я попытался использовать stty, чтобы не отображать новые строки, но мне это не удалось. Может быть, можно использовать stty, чтобы остановить прокрутку терминала? Конечно, я мог бы написать свой собственный метод для перехвата ввода путем чтения одного символа за раз (и перехвата «возврата»), но я хочу использовать все дополнительные возможности, которые предоставляет readline.

7
задан Joakim Arnlind 14 August 2011 в 13:51
поделиться