R提示符

时间:2017-02-06 16:02:39

标签: r command-prompt ansi-escape

当R在支持颜色的终端中以交互方式运行时,可以使用ANSI转义序列以便在提示中添加颜色,例如

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

enter image description here

不幸的是,出现了问题,因为对于长命令行,行继续覆盖提示而不是写入下一行。 enter image description here 使用多种颜色时问题变得更糟,因为不知何故,每个转义序列在命令行中“占用一些空间”,直到提示结束可能会覆盖开头。在我的配置上,例如

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

相关

2 个答案:

答案 0 :(得分:1)

您需要在每个“不可见”颜色代码周围加上特殊的“标记”:\001\002

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

有关说明,请参见$ info readline(或this short answer)。

答案 1 :(得分:0)

r-devel邮件列表上的GáborCsárdi说我无法轻易改变这种行为(http://r.789695.n4.nabble.com/buggy-ANSI-escape-sequences-in-R-prompt-td4728671.html)。他提出的解决方法是使用两行提示,这对我来说非常适合。