Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R命令历史记录:如何配置向上箭头以处理;多行、大括号封闭输入“;作为一条线?_R_Navigation_Console_Readline_Libreadline - Fatal编程技术网

R命令历史记录:如何配置向上箭头以处理;多行、大括号封闭输入“;作为一条线?

R命令历史记录:如何配置向上箭头以处理;多行、大括号封闭输入“;作为一条线?,r,navigation,console,readline,libreadline,R,Navigation,Console,Readline,Libreadline,这个问题是关于在导航命令历史记录时,如何配置R控制台,使其行为类似于bash shell。它在某种程度上与?历史记录相关。对于用大括号括起来的多行,我想将R的命令历史导航配置为类似于bash 目前,在Linux下的xterm中运行R时,使用向上箭头导航命令历史记录会导致逐个调用前面的每一行,即使一组行已用大括号括起来。例如,当将多行函数从文本编辑器复制/粘贴到R控制台时,就会发生这种情况。bash则不然。 下面是bash如何在这方面发挥作用的示例: 在Linux下xterm内的bash shel

这个问题是关于在导航命令历史记录时,如何配置R控制台,使其行为类似于bash shell。它在某种程度上与
?历史记录相关。对于用大括号括起来的多行,我想将R的命令历史导航配置为类似于bash

目前,在Linux下的xterm中运行R时,使用向上箭头导航命令历史记录会导致逐个调用前面的每一行,即使一组行已用大括号括起来。例如,当将多行函数从文本编辑器复制/粘贴到R控制台时,就会发生这种情况。bash则不然。 下面是bash如何在这方面发挥作用的示例:

在Linux下xterm内的bash shell中,键入以下五行后

a=1 
{
x=1
y=1
}
。。。第一次按下向上箭头将调用括号内命令的单行重新格式,如下所示

{ x=1; y=1; }
。。。第二家媒体会想起这件事

a=1

在R中,向上箭头一次向后导航一行,与封装无关。是否有一种方法可以配置R,使其成为命令历史导航功能,如bash?

您可以使用。我将其用于其他控制台程序,效果非常好。您需要使用rlwrap二进制文件在R命令前面加上前缀,然后可以通过多种方式恢复历史记录行,包括多行匹配。

Linux/Unix的变通方法

类似于在Rstudio中(感谢Ari B.Friedman的评论),R控制台中的用户使用ShiftEnter绕过返回,您可以启动换行符(在R终端中)不接受使用Ctrl-VCtrl-J的换行命令。这样,多行命令将作为一行输入而不是输入被接受到历史记录中,您甚至有机会对其进行编辑。您甚至可以在
.inputrc
文件中进行管理,以便为此操作进行自定义组合

我认为R的直接重新配置是不可能的


如果您是Emacs用户(或打算成为Emacs用户),这是个问题。值得一提的是,ESS(Emacs讲统计)正是您所要求的。是的,它非常方便。如果我理解正确的话,RStudio也是如此。(好的,在重读你的问题时,ESS实际上做了一些不同的事情(而且更好),回忆整个粘贴的代码块,不管它是否包含在大括号中,或者由几个表达式组成,或者其他什么。)@RicardoSaporta您使用的是最新版本吗?我刚刚在RStudio服务器(0.97.248)上试用过,它的行为与JoshO'Brien描述的一样:只需按一次向上箭头,即可回忆粘贴的所有内容。另一种方法是找到支持“管道”到控制台的文本编辑器,我试着安装这个并运行
rlwrap R
,没有发现任何不同。我应该做其他smth吗?检查这里的--multi-line选项。@RobertKubrick链接失效。这里有可能吗?更新的一个:您知道
rlwrap
的适当命令行是什么吗?阅读帮助后,这似乎是一个相当大的挑战