Gibt es eine Methode zum Drucken auf der Konsole ohne nachgestellten Zeilenumbruch? Die console
Objekt - Dokumentation sagt nichts über das:
console.log()
Druckt mit Zeilenumbruch nach Standard. Diese Funktion kann mehrere Argumente auf
printf()
ähnliche Weise annehmen . Beispiel:console.log('count: %d', count);
Wenn in der ersten Zeichenfolge keine Formatierungselemente gefunden werden,
util.inspect
wird für jedes Argument verwendet.
node.js
console
console.log
Evan Carroll
quelle
quelle
console.log
druckte\n
buchstäblich, als ich wollte, dass es ein Zeilenumbruchzeichen druckt.` followed by an
n`, als ich einen echten Zeilenumbruch ausgeben wollte.Wenn Sie Nachrichten in derselben Zeile überschreiben möchten, z. B. in einem Countdown, können Sie am Ende der Zeichenfolge '\ r' hinzufügen.
quelle
process.stdout.write("Downloading " + data.length + " bytes\033[0G");
\033
mit dem Hex - wörtlichen\x1b
wie folgt aus :\x1b[0G
. (das funktioniert sowohl mit striktem als auch mit nicht striktem Code)In der Windows-Konsole (auch Linux) sollten Sie
'\r'
den entsprechenden Code ersetzen\033[0G
:Dies verwendet eine Escape-Sequenz für das VT220-Terminal, um den Cursor in die erste Spalte zu senden.
quelle
[\] 39
und der Cursor wird auf dem erstenvar spinner = '|/-\\'.split('');process.stdout.write("["+this.randomElement(spinner)+"] "+message+"\033[0G");
man console_codes
(unter Linux oder online) und meine Lieblingsreferenz ist www2.phys.canterbury.ac.nz/dept/docs/manuals/unix/DEC_4.0e_Docs/… (99% des Inhalts funktionieren noch) . Einziger Vorbehalt: Seien Sie bereit, Experimente an mehreren verschiedenen Terminals zu testen, bevor Sie sie in großem Umfang einsetzen.Als Erweiterung / Erweiterung der brillanten Ergänzung von @rodowi oben bezüglich der Möglichkeit, eine Zeile zu überschreiben:
Wenn Sie nicht möchten, dass sich der Terminalcursor beim ersten Zeichen befindet, wie ich in meinem Code gesehen habe, sollten Sie Folgendes tun:
Durch Platzieren der
\r
vor der nächsten print-Anweisung wird der Cursor zurückgesetzt, kurz bevor die ersetzende Zeichenfolge die vorherige überschreibt.quelle
util.print kann auch verwendet werden. Lesen Sie: http://nodejs.org/api/util.html#util_util_print
Ein Beispiel:
quelle
util.print
ist jetzt veraltet(node:7616) DeprecationWarning: util.print is deprecated. Use console.log instead.
Es scheint viele Antworten zu geben, die darauf hindeuten:
Fehlerprotokolle sollten ausgegeben werden auf:
Verwenden Sie stattdessen:
Für alle, die sich fragen, warum
process.stdout.write('\033[0G');
sie nichts getan haben, liegt es daran, dassstdout
es gepuffert ist und Sie auf dasdrain
Ereignis warten müssen ( weitere Informationen ).Wenn write zurückgibt
false
, wird eindrain
Ereignis ausgelöst.quelle
Keine dieser Lösungen arbeiten für mich,
process.stdout.write('ok\033[0G')
und mit nur'\r'
gerade eine neue Linie erstellen , aber nicht überschreiben auf Mac OSX 10.9.2.EDIT: Ich musste dies verwenden, um die aktuelle Zeile zu ersetzen:
quelle
Bei Verwendung des strengen Modus wurde folgende Fehlermeldung angezeigt:
Die folgende Lösung funktioniert ( Quelle ):
quelle