Я хотел бы сделать плавающее приглашение в node.js (приглашение, которое остается в нижней строке, даже когда что-то выводится). Вот что я пробовал:
const rl = require("readline").createInterface({input: process.stdin, output: process.stdout});
rl.question("$ ", console.log);
setTimeout(_ => console.log("some output"), 1000);
Это предлагает пользователю с помощью $
, и пользователь может печатать после $
, но когда строка регистрируется, приглашение остается на той же строке, но пользователь печатает в следующей строке.
Желаемый результат:
$ [user input goes here]
... 1 second later ...
some output
$ [user input goes here]
Фактический результат:
$ [user input goes here]
... 1 second later ...
$ some output
[user input goes here]
Как заставить приглашение перемещаться вниз по строке всякий раз, когда что-то выводится?
Редактировать: Я заглянул в модуль prompt , и это хорошо, но не совсем то, что я хочу, по двум причинам:
Он не очень настраиваемый и добавляет кучу необычного форматирования, которое мне не нужно.
Когда что-то выводится, приглашение остается на предыдущая строка и новое приглашение выводится на следующей строке, что не идеально.
Редактировать 2: Я также посмотрел на решения с чистым ANSI но у них тоже есть проблема. Возможность контролировать, где произойдет следующая печать, путем перемещения курсора - это хорошо, но пользовательский ввод также показывает, где находится курсор, что вызывает проблемы.