Tengo un tablero de juego ASCII que estoy mostrandoen el terminal de Mac OS X, y debe actualizarse con frecuencia. ¿Hay alguna forma conveniente de borrar o sobrescribir el contenido previamente impreso en la Terminal? ¿O necesito limpiar la pantalla cada vez y reimprimir el tablero? (Buscando soluciones que usan Java o Scala)
Respuestas
1 para la respuesta № 1El programa OS X Terminal emula un color xterm (variable de entorno TERM
muestra un valor predeterminado de xterm-color
), que a su vez se define como emulando una DEC VT102 / 220 que es básicamente utiliza / define el Códigos de escape ANSI.
Si solo desea borrar toda la pantalla, deberá dar salida a la secuencia de escape que corresponde a CUP
(Actualización del cursor) seguido de ED
(Borrar pantalla). En una VT102, específicamente desea utilizar:
<ESC>[H<ESC>[J
Dónde <ESC>
Es el personaje de escape (ASCII 27).
Usar el Búfer de pantalla alternativo (como indicaste en vim
o emacs
), deberás enviar el código para comenzar el búfer de pantalla alternativo cuando comiences:
<ESC>[?1049h
y luego vuelva a cambiar al búfer de pantalla normal cuando termine:
<ESC>[?1049l
Mientras utiliza el búfer de pantalla alternativo, "llno puede retroceder, y no afectará el retroceso o el contenido normal de la pantalla. Al reanudar el búfer de pantalla normal, volverá al contexto del terminal original, incluidos todos los contenidos de pantalla existentes y retrocederá.