Escape-последовательности ANSI: сохранить и восстановить позицию строки - PullRequest
4 голосов
/ 19 сентября 2011

Я пишу очень простое небольшое консольное приложение и играю с некоторыми управляющими последовательностями ANSI , чтобы получить более приятный вывод.

Я пытаюсь сделать что-то вроде этого. Там есть заголовок с именем, а затем, во время работы программы, печатаются несколько строк. Поскольку каждая строка печатается, я хотел бы обновить строку заголовка с индикатором прогресса. например:

My header row                 [ 0/5 ]
-------------------------------------

затем после некоторой обработки

My header row                 [ 1/5 ]
-------------------------------------
here is some output

...

My header row                 [ 2/5 ]
-------------------------------------
here is some output
the output could
be over several
lines

Я попытался использовать код сохранения позиции курсора ( ESC + [s) и затем восстановить эту позицию с помощью ESC + [u, однако при этом восстанавливается только столбец , а не строка.

для некоторого фона, это программа Node.JS. Я кратко рассмотрел node-ncurses , однако для этой задачи это выглядит немного излишним (?)

1 Ответ

4 голосов
/ 15 марта 2012

Это проблема, возникающая при печати в последнем ряду экрана, и она должна прокручиваться вниз.Прокрутка текста не обновляет сохраненную позицию курсора.Вам нужно обнаружить, что какая-то прокрутка произошла (я не знаю, как), и выполнить соответствующее действие, например, отправить последовательности, перемещая курсор вверх после последовательности Esc [u, чтобы перейти в исходное положение.

Пока.-

...