Wie können Sie vorhandenen Text im Terminal bearbeiten (und den Cursor bewegen)?

Ich habe diese Demo einmal gesehen, in der ein Textabschnitt ausgedruckt wurde (wie Sie ihn beim Tippen erhalten würden)some-command --help), und es sprang dann zurück zu ein paar Stichwörtern im Text und änderte die Textfarbe,nachdem es schon im terminal ausgedruckt wurde.

Das kommt mir verrückt vor. Wie haben sie das gemacht?

Ich denke, ich fange an, darüber nachzudenkenstdout undstdin sind technisch gesehen ein "IO-Stream", also ist das vielleicht eine persistente Variable, die die Position eines Cursors verfolgt? Ich erinnere mich, dass ich so etwas beim Erstellen eines Sprachparsers getan habe.

Das Ziel wäre folgendes: Angenommen, Sie geben Folgendes in die Konsole ein und es wird ein leeres Array ausgegeben, da in Node.js alles asynchron ist und wir die asynchrone Funktion nicht jedes Mal in die Konsole schreiben möchten:

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

Wenn der asynchrone Rückruf ausgeführt wird, gehen Sie zurück und bearbeiten den=> [] um das Ergebnis einzuschließen:

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

Es wäre fantastisch, wenn man zumindest wüsste, wie man implementiert, auch wenn noch viele andere Probleme zu lösen sind (die nichts mit dieser Frage zu tun haben. Und ich weiß, dass Sie einen globalen Rückruf definieren und so etwas tun könnenApp.User.all(_c)).

Wie bearbeite ich die Terminalausgabe, nachdem sie bereits gedruckt wurde?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage