2017-02-06 20 views
0

Когда R запускается в интерактивном режиме в терминале, который поддерживает цвета, то можно использовать управляющие последовательности ANSI для того, чтобы положить цвета в приглашении, такие какглючит ANSI управляющие последовательности в R подсказка

options(prompt = "\033[0;31mThis is red\033[0m> ") 

enter image description here

К сожалению, что-то пошло не так, потому что для длинных командных строк продолжение строки отменяет приглашение вместо записи в следующей строке. enter image description here Проблема ухудшается при использовании нескольких цветов, так как каждая escape-последовательность «занимает некоторое пространство» в командной строке, до той точки, что конец подсказки может перезаписать начало. На моей конфигурации это происходит, например, с

options(prompt = paste("\033[0;31m With \033[0;32m multiple", 
        "\033[0;33m colors \033[0;34m this", 
        "\033[0;35m gets \033[0;36m really", 
        "\033[0;37m wrong! \033[0m")) 

enter image description here

Почему это так? Есть ли обходной путь?

PS: Это довольно старый пост кажется связанным http://r.789695.n4.nabble.com/Xterm-escape-sequences-in-Prompt-td906375.html

+0

Чтобы быть понятным, это когда ваша типизация вызывает новую строку, а не когда вы ломаете длинную строку и получаете приглашение на продолжение, обычно «+» да? Скриншоты могут помочь (и рекомендуется здесь, в отличие от R-help!) – Spacedman

+0

@Spacedman Точно, это когда я печатаю длинную строку. Я добавил несколько скриншотов. –

ответ

0

Габор Csárdi на г-Devel список рассылки говорит, что я не могу легко изменить это поведение (http://r.789695.n4.nabble.com/buggy-ANSI-escape-sequences-in-R-prompt-td4728671.html). Обходной путь, который он предлагает, состоит в том, чтобы использовать подсказку из двух строк, которая подходит мне достаточно хорошо.