/ / Анімація терміналів - чи правильний підхід до очищення екрана? - java, macos, scala, terminal

Термінал анімації - це очищення екрану правильного підходу? - java, macos, scala, термінал

У мене є ігрова дошка ASCII, яку я демонструюв терміналі Mac OS X, і його потрібно часто оновлювати. Чи є зручний спосіб стерти або перезаписати раніше надрукований вміст у Терміналі? Або мені потрібно щоразу очищати екран і передрукувати дошку? (Шукаєте рішення, які використовують або Java, або Scala)

Відповіді:

1 для відповіді № 1

Програма OS X Terminal імітує кольоровий xterm (змінна середовище) TERM показує значення за замовчуванням xterm-color), який сам визначається як емуляція a DEC VT102 / 220 який в основному використовує / визначає ANSI коди втечі.

Якщо ви просто хочете очистити весь дисплей, вам потрібно буде вивести послідовність евакуації, якій відповідає CUP (Оновлення курсору), після чого ED (Стерти дисплей). На VT102 ви спеціально хочете використовувати:

<ESC>[H<ESC>[J

Де <ESC> є символом втечі (ASCII 27).

Щоб скористатись Черговий буфер екрана (як ви вказали в vim або emacs), вам потрібно буде надіслати код для запуску альтернативного буфера екрану при запуску:

<ESC>[?1049h

а потім поверніться до звичайного буфера екрана, коли закінчите:

<ESC>[?1049l

Використовуючи альтернативний буфер екрана, ви будете "у вас немає прокрутки назад, і ви не вплинете на прокрутку назад або звичайний вміст екрана. Після відновлення нормального буфера екрана ви повернетесь до вихідного контекстного терміналу, включаючи весь наявний вміст екрана, і прокрутіть назад.