当R在支持颜色的终端中以交互方式运行时,可以使用ANSI转义序列以便在提示中添加颜色,例如
options(prompt = "\033[0;31mThis is red\033[0m> ")
不幸的是,出现了问题,因为对于长命令行,行继续覆盖提示而不是写入下一行。 使用多种颜色时问题变得更糟,因为不知何故,每个转义序列在命令行中“占用一些空间”,直到提示结束可能会覆盖开头。在我的配置上,例如
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"))
为什么会这样?有解决方法吗?
PS:这个相当古老的帖子似乎与http://r.789695.n4.nabble.com/Xterm-escape-sequences-in-Prompt-td906375.html
相关答案 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)。他提出的解决方法是使用两行提示,这对我来说非常适合。