Output/the 下一个命令提示符会覆盖 R 中的长命令

Output/the next command prompt overwrites long command in R

我在 CentOS 7 linux 框的命令行上看到 R(v 3.3.2,运行)的一个非常奇怪的问题。如果我在终端中执行超过一行的命令,输出将出现在命令第二行的开头。以前版本的 R 不会发生这种情况,但我安装的更高版本确实会发生这种情况。我使用 Putty 作为终端,但如果我使用 xterm 也会发生这种情况。

为了更好地描述它,它看起来像这样:

> tmpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaal=1 [before hitting enter]
> tmpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> aaaaaaaaaaaaaaaal=1 [after enter, typing overwrites the a's now]

如果多行命令输出某些内容,则该输出出现在第二行并覆盖 a。如果有错误,则错误消息会正确终止,下一个提示将跟在错误消息之后。那么有人有什么想法吗?提前致谢!

更新:经过更多的试验,我发现了另一种奇怪的行为。如果我使用 CTRL-R 搜索先前的多行命令,然后执行它,输出或后续提示将出现在命令中与光标所在位置相同的位置。这是另一个例子:

(reverse-i-search)`1':tmpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal=1[cursor on one before hitting enter]
[hit enter and then:]
>tmpvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaal=1
aaaaaaaaal=>

很奇怪。很难描述,所以很难在堆栈交换或其他地方找到任何其他类似问题的证据。我的感觉是它与 readline 库有关,但这很奇怪,因为这不会发生在 shell 命令行中,据我所知仅在 R 中发生。

更新 2:我发现了一种可能更能说明问题的方法来重现这个问题。如果您手动添加一堆换行符(通过重复输入 CTRL-V CTRL-J),然后按回车键,下一个提示会直接跳回到上一个提示的下方。这不是在底层 shell(对我来说 bash)或我可以检查的以前版本的 R 中发生的情况。

只是想知道答案以防其他人遇到这个问题,问题是我的系统使用的是旧版本的 readline 库 6.2,将其更新到当前版本后问题消失了, 7.0。所以看起来即使更高版本的 R 将使用过时的 readline 安装,它们也不能正常工作。