¿Cómo se edita el texto existente (y se mueve el cursor) en el terminal?

Vi esta demostración una vez que se imprimió un párrafo de texto (como el que obtendrías al escribirsome-command --help), y luego saltó de nuevo a un par de palabras clave en el texto y cambió el color del texto,Después de que ya estaba impreso en la terminal..

Eso parece una locura para mí. ¿Cómo hicieron eso?

Empezando a pensarlo, supongo.stdout ystdin ¿Son técnicamente un "flujo de E / S", entonces tal vez esa es una variable persistente que mantiene un registro de la posición de un cursor? Recuerdo haber hecho algo así al crear un analizador de lenguaje.

El objetivo sería este: digamos que escribes lo siguiente en la consola, y genera una matriz en blanco porque en Node.js, todo es asíncrono y no queremos escribir la función asíncrona cada vez en la consola:

$ node app.js
> App.User.all()
=> []

Luego, cuando se ejecuta la devolución de llamada asíncrona, regresa y edita el=> [] para incluir el resultado:

$ node app.js
> App.User.all()
=> [#<User id:1>, #<User id:2>...]

Sería increíble al menos saber cómo implementar, incluso si hay muchos otros problemas por resolver (no relacionados con esta pregunta. Y sé que puede definir una devolución de llamada global y hacer algo comoApp.User.all(_c)).

¿Cómo se edita la salida del terminal después de que ya se haya impreso?

Respuestas a la pregunta(2)

Su respuesta a la pregunta