Терминальная анимация - подходит ли очистка экрана?

1

У меня есть игровая панель ASCII, которую я показываю в терминале Mac OS X, и ее нужно часто обновлять. Есть ли удобный способ стереть или перезаписать ранее напечатанный контент в терминале? Или мне нужно каждый раз очищать экран и перепечатывать доску? (Ищете решения, которые используют Java или Scala)

  • 0
    У Java нет приличной функции «чистого экрана». Я бы пошел на нетерминальный интерфейс, в котором у вас есть полный контроль
  • 0
    Я настоятельно предпочитаю использовать терминал вместо создания графического интерфейса. Есть ли удобный способ открыть мое приложение в своем собственном представлении, таком как Vim или Emacs, чтобы при выходе из программы пользователь возвращался в исходную командную строку? Если я смогу это сделать, то тогда будет нормальная повторная очистка экрана.
Показать ещё 1 комментарий
Теги:
macos
terminal

1 ответ

1
Лучший ответ

Программа терминалов OS X эмулирует цвет xterm (переменная среды TERM показывает значение по умолчанию xterm-color), которая сама определяется как эмуляция DEC VT102/220, которая в основном использует/определяет escape-коды ANSI.

Если вы просто хотите очистить весь экран, вам нужно будет вывести escape-последовательность, которая соответствует CUP (Cursor Update), а затем ED (Erase Display). На VT102 вы хотели бы использовать:

<ESC>[H<ESC>[J

Где <ESC> - escape-символ (ASCII 27).

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

<ESC>[?1049h

а затем вернитесь к обычному буферу экрана, когда вы закончите:

<ESC>[?1049l

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

  • 0
    Альтернативный экранный буфер работал отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню