Возврат каретки не работает с форматированным текстом ANSI - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь напечатать текст несколько раз на одной строке в R (окна). Это работает, если я использую возврат каретки следующим образом:

text = c("word 1", "word 2", "word 3")
for (word in text) {
  cat("\rText =",word)
  Sys.sleep(0.4)
}

Это переопределяет каждую строку, как и должно быть. Тем не менее, я хотел бы напечатать слова жирным шрифтом и использовать коды ANSI \u001b[1m и сброс \u001b[0m, что приводит к:

text = c("word 1", "word 2", "word 3")
for (word in text) {
  cat("\rText =\u001b[1m",word,"\u001b[0m")
  Sys.sleep(0.4)
}

Это работает для первых двух отпечатков, но в конечном итоге приводит к выводу:

Текст = Текст = Слово 3 Интересно, что это работает, если ВСЕ выходные данные выделены жирным шрифтом, а не только его частью.

Как мне заставить это работать?

1 Ответ

0 голосов
/ 27 июня 2018

Я знаю, что это, вероятно, не то, что вы ищете, но, возможно, это даст вам подсказку ... Я только что провел час с этой головоломкой и \r и циклами \b, чтобы вернуться назад печатный текст показывает странное поведение. Это сработало, но обновилось в верхней части консоли:

text = c("word 1", "word 2", "word 3", "word 4")
for (word in text) {
  cat("\014")
  cat("Text =","\u001b[1m",word)
  Sys.sleep(0.4);
  cat("\u001b[0m");
  flush.console(); 
}
...