【发布时间】:2017-06-23 15:34:37
【问题描述】:
当 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
更新: 使用 R 版本 3.6.0 和 readline 8.0(不知道这里有什么问题),上面描述的大部分问题都消失了,但仍然存在一些奇怪的行为。下面接受的答案可以解决所有问题。
【问题讨论】:
-
需要明确的是,这是您的输入导致换行,而不是当您中断长行并获得继续提示时,通常是“+”是吗?屏幕截图可能会有所帮助(这里鼓励使用屏幕截图,这与 R-help 不同!)
-
@Spacedman 没错,这是我输入长行的时候。我添加了一些截图。
标签: r command-prompt ansi-escape