美文网首页计算机@linux_python_R 技术帖R
使用 VSCode 愉快地进行远程 R 开发

使用 VSCode 愉快地进行远程 R 开发

作者: 思考问题的熊 | 来源:发表于2020-01-08 12:02 被阅读0次
image

2019年底(其实也就是半个多月之前)听了 renkun 大神在上海 R 会议的一个分享,分享主题是「Rstudio vs VSCode」,然后他紧接着又写了两篇使用 VSCode 进行 R 开发的博客。仔细了解之后,感觉自己有救了。

之所以这么说,是因为自己一直有个需求得不到很好的满足:在本地方便的开发部署在远程服务器上的 Shiny 应用。

具体一点说,因为我的 Shiny 需要依托一些 Linux 下才能运行的程序,且这些程序对内存有要求,就导致我无法在 Windows 本地使用 WSL 进行测试和开发。而之前使用 VSCode Remote SSH 让本地 VSCode 连接上服务器本身没问题,但是早期 R Console 运行得到的各种结果本身却无法在 VSCode 中方便的查看,总是需要跳出额外的各种窗口。

当然,使用 Rstudio Server 是一个选择,但在实际使用中会有比如单一 session,时常未响应,编辑器各种不顺手等等问题。

随着几位大神的开发加持,现在使用 VSCode 愉快地进行远程 R 语言开发不仅成为了一种可能,而且还非常香,在使用体验上基本不输 Rstudio,而且很多小细节上更加贴心。

为什么要用 VSCode 写 R

大家可能会有一个非常真诚的疑问,Rstudio (server) 它不香吗,写 R 为什么还要用其它编辑器? 下面这张幻灯片来自 renkun 在会议上的分享,基本说明了问题。

image

就像上图总结的,RStudio 好用,几乎是所有 R 用户的最佳选择。但同时像上文提到的,时不时的无响应带来的各种不稳定,单 session 操作等又让人苦恼。

你可能会有这样的感受,使用 Rstudio 的过程中因为其本身需要一直和服务器保持通信,live R session 和语言服务又无法分离,当 Console 中运行了一个耗时或者耗内存的命令之后,整个 Rstudio 就无法进行任何操作了。

那 VScode 呢?这个编辑器本身的优点不必多说,虽然之前对 R 的支持没那么友好,不过最近几个月在 VSCode 中使用 R 有了重大的体验升级,这主要体现在两个方面。

  1. R Language Server 在后端的加持
  2. vscode-R 插件在前端的重大迭代

R Language Server

首先说 R Language Server,R Language Server 依托于 Language Server Protocol(可以让任何语言在任何编辑器上得到很好的语法支持)。现在的 R Language Server 在 VScode 中已经非常好的支持了多种鼠标悬停内容展示、帮助文档展示、自动补全、文本高亮以及代码格式化等功能。

R Language Server 和 Rstudio 相比差别最大的一点在于前者是真正的静态分析(static analysis),指在不运行程序的条件下,进行程序分析的方法。也就是说所有功能的实现都无需运行代码,对代码进行的分析仅仅依赖代码本身。而且它的语言服务完全脱离于 R session,即便在 R session 非常繁忙的情况下依旧可以提供服务。

接下来仅仅列举几个在 Rstuido 中不是很方便实现或者无法实现的功能。

  • 鼠标悬停即显示函数定义和文档,无论对应的包是否已经加载。(箭头处为鼠标位置,下同)
image
  • 鼠标悬停在变量上,直接展示变量类型信息

这个就类似于 Rstuido 中 environment 那个小框的功能,但是更方便直观。

image
  • 自动高亮文档内所有同一变量
image
  • 选中代码,自动格式化,例如添加空格等。
image

vscode-R 新增 Session Watcher

vscode-R 插件则在最近的更新中新增了一个 Session Watcher 功能,即便还在测试阶段这个功能也足以让人激动。它实现了在 VSCode 中实时展示各种变量的需求View() 的时候再也不会有各种弹窗了。文字不好描述,直接上图。

  • 查看 data.frame

如下图右,直接查看data.frame 内容,支持搜索。

image
  • 展示 ggplot 出图
image
  • 展示 htmlwidgets
image

通过SSH连接远程服务器

接下来简单介绍如何实现在本地 VScode 中实现远程 R 开发。

首先要实现的自然是远程操作,这里以使用 PC 通过 SSH 连接远程 Linux 服务器为例。

image

我们默认服务器已经开通了ssh服务,然后本地 PC 已经正确安装了 Windows OpenSSH Client。

安装插件 Remote-SSH

image

然后在命令行面板中找到 Remote-SSH 相关命令,可以直接选择链接服务器,也可以选择打开配置文件。这里我们选择打开配置文件进行简单的配置。

image

在配置文件中可以输入相应的用户名 IP 地址以及端口等信息。写法如下图所示,写好保存即可。

image

再选择连接Host的命令,就会看到之前我们已经保存好的 Host 选项。

image

点击对应的 Host,然后输入密码即可。

如果为了方便不想每次都输入密码,可以使用 SSH key 配置服务器和本地的公钥私钥,这里不再展开。

连接成功之后,VSCode 左下角就会显示一个远程连接的标志,同时你还可以直接在 TERMINAL 中打开一个 shell (我用的是 zsh),就像平时使用类似 Xshell 的工具一样直接进行各种操作。

image

配置R语言开发环境

完成了远程连接服务器的工作,接下来是在 Remote 状态下简单进行 R 相关的配置。

首先安装两个必备的插件,R 和 R LSP。然后还需要在服务器的 R 中安装一个R包 languageserver。

install.packages("languageserver")
image

随后在设置界面中进行几个关于 R 的设置。

首先是设置Linux下的R路径,如果使用系统自带的 R 应该是/usr/bin/R ,如果是使用自己目录下,例如使用conda安装的R则指定对应的 R 路径。这里推荐使用 Radian 替代 R,所以我的 R 路径就指向了使用conda安装的radian。如下图所示。

如果使用 Radian的话,则需要勾选 Bracketed Paste 选项。

如果希望使用服务器上的一些 R 配置,例如 .Rprofile和 .Renviron 文件,那么 Rterm Option 处就不要加什么其它参数,如果不希望使用则可以酌情添加--no-init-file 或者 --no-environ 等参数。

image

安装插件。在 Rstudio 中路径的自动补全功能非常方便,在 VSCode 中则可以通过插件 Path Autocomplete 来实现这个功能。

至此,就完成了在 VSCode 中使用 R 所需要的一些基本配置,可以开工搬砖。

最终使用效果

直接上截图。

  • 左侧为服务器对应的文件目录,可以直接点击查看编辑
  • 中间是 R 脚本,可以开心的写代码
  • 右边是对应的网页工具,直接查看效果
  • 下面是连接到服务器的终端,可以在 zsh、R 以及 python 等终端任意切换。也可以同时打开多个不同的 R 终端进行不同任务,互不干扰。
image

扩展资料:

最后的最后,多说一句,无论用啥自己用的开心就好,不接受ETC评论,请不要自动抬扛哈


相关文章

网友评论

    本文标题:使用 VSCode 愉快地进行远程 R 开发

    本文链接:https://www.haomeiwen.com/subject/plzjactx.html