输出/下一个命令提示符覆盖R中的长命令



我看到R出现了一个非常奇怪的问题(3.3.2版,运行在CentOS 7 linux盒子的命令行上(。如果我执行的命令越过终端中的一行,输出将出现在命令的第二行的开头。以前版本的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进行安装,它们似乎也不能正确工作。

最新更新