Czy istnieje metoda drukowania na konsoli bez końcowego znaku nowej linii? console
Obiekt dokumentacja nic nie powiedzieć, że w sprawie:
console.log()
Drukuje na standardowym ekranie z nową linią. Ta funkcja może przyjmować wiele argumentów w
printf()
podobny sposób. Przykład:console.log('count: %d', count);
Jeśli elementy formujące nie zostaną znalezione w pierwszym ciągu, wówczas
util.inspect
zostanie użyty dla każdego argumentu.
node.js
console
console.log
Evan Carroll
źródło
źródło
console.log
drukowałem\n
dosłownie, kiedy chciałem, aby wydrukował znak nowej linii.` followed by an
Dostawałem dosłowne „ n”, kiedy chciałem stworzyć prawdziwy znak nowej linii.Ponadto, jeśli chcesz zastąpić wiadomości w tym samym wierszu, na przykład podczas odliczania, możesz dodać „\ r” na końcu ciągu.
źródło
process.stdout.write("Downloading " + data.length + " bytes\033[0G");
\033
z dosłownym hex\x1b
tak:\x1b[0G
. (która działa zarówno z kodem ścisłym, jak i nie ścisłym)W konsoli Windows (także Linux) należy zastąpić
'\r'
go równoważnym kodem\033[0G
:Używa sekwencji ucieczki terminala VT220 do wysłania kursora do pierwszej kolumny.
źródło
[\] 39
a kursor jest podświetlony na pierwszym znaku:var spinner = '|/-\\'.split('');process.stdout.write("["+this.randomElement(spinner)+"] "+message+"\033[0G");
man console_codes
(w systemie Linux lub online), a moją ulubioną referencją jest www2.phys.canterbury.ac.nz/dept/docs/manuals/unix/DEC_4.0e_Docs/… (99% jego zawartości nadal działa) . Tylko zastrzeżenie: przed szerokim wdrożeniem przygotuj się do przetestowania dowolnych eksperymentów na kilku różnych terminalach.W ramach rozszerzenia / udoskonalenia genialnego dodatku dokonanego przez @rodowi powyżej dotyczącego możliwości zastąpienia wiersza:
Jeśli nie chcesz, aby kursor terminala znajdował się przy pierwszym znaku, jak widziałem w moim kodzie, rozważ wykonanie następujących czynności:
Umieszczając
\r
przed następną instrukcją drukowania kursor jest resetowany tuż przed zastąpieniem ciągu zastępującego ciąg poprzedni.źródło
util.print może być stosowany również. Przeczytaj: http://nodejs.org/api/util.html#util_util_print
Przykład:
źródło
util.print
jest przestarzałe(node:7616) DeprecationWarning: util.print is deprecated. Use console.log instead.
Wydaje się, że istnieje wiele odpowiedzi sugerujących:
Dzienniki błędów powinny być emitowane:
Zamiast tego użyj:
Dla każdego, kto zastanawia się, dlaczego
process.stdout.write('\033[0G');
nic nie zrobił, to dlatego, żestdout
jest buforowany i musisz poczekać nadrain
wydarzenie ( więcej informacji ).Jeśli zapis zwraca
false
, wywoładrain
zdarzenie.źródło
Żadne z tych rozwiązań nie działa dla mnie
process.stdout.write('ok\033[0G')
i po prostu używa'\r'
nowej linii, ale nie zastępuj w Mac OSX 10.9.2.EDYCJA: Musiałem użyć tego, aby zastąpić bieżącą linię:
źródło
Podczas używania trybu ścisłego wystąpił następujący błąd:
Działa następujące rozwiązanie ( źródło ):
źródło