我看到R的一个非常奇怪的问题(v 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),然后按Enter键,则下一个提示会跳回到上一个提示下。这不是在底层shell(对我而言是重击)或我可以检查的以前版本的R中发生的事情。
答案 0 :(得分:0)
只是要提供答案,以防其他任何人遇到此问题,问题是我的系统使用的是旧版本的readline库6.2,而将其更新为当前版本7.0时,该问题消失了。因此,即使R的更高版本将随过时的读取行一起安装,它们似乎也无法正常工作。