写在前面

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 在会议上的分享,基本说明了问题。

@renkun

就像上图总结的,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 中不是很方便实现或者无法实现的功能。

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

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

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

vscode-R 新增 Session Watcher

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

  • 查看 data.frame

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

  • 展示 ggplot 出图
  • 展示 htmlwidgets

通过SSH连接远程服务器

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

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

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

安装插件 Remote-SSH

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

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

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

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

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

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

配置R语言开发环境

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

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

install.packages("languageserver")

随后在设置界面中进行几个关于 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 等参数。

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

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

最终使用效果

直接上截图。

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

扩展资料:

  • Writing R in VSCode: A Fresh Start
  • Writing R in VSCode: Interacting with an R session
  • Remote Development using SSH
  • Quick start: SSH key

vscode remote ssh 重新连接_使用 VSCode 愉快地进行 R 远程开发相关推荐

  1. sourcetree mac 免登录_「vscode remote ssh 免登录」mac

    如果你只知道传统的ssh操作,或者sftp/ftp上传下载操作,那可能有点太low了.强烈推荐你使用 vscode remote ssh.举个栗子来形象比喻一下:钥匙开门 和 指纹开门 的区别. 已经 ...

  2. 使用vscode remote ssh功能远程连接服务器或树莓派时,报错Setting up SSH tunnel的终极解决办法,全网仅此一份

    当你想用vscode remote ssh 功能远程开发linux服务器.树莓派时,.vscode-server文件创建完成,但是一直显示卡在 Setting up SSH Host <你的用户 ...

  3. vscode remote ssh无法建立连接或一直需要输入密码

    vscode remote ssh 无法建立连接 问题描述:需要通过vscode的Remote ssh插件来连接远程的Linux服务器时,会出现过段时间就连接不上(couldn't create co ...

  4. centos后台登录ftp_「vscode remote ssh 免登录」mac

    如果你只知道传统的ssh操作,或者sftp/ftp上传下载操作,那可能有点太low了.强烈推荐你使用 vscode remote ssh.举个栗子来形象比喻一下:钥匙开门 和 指纹开门 的区别. 已经 ...

  5. VSCode Remote SSH 过程试图写入的管道不存在

    VSCode Remote SSH 过程试图写入的管道不存在 问题:用remote ssh 连接服务器时报错,"过程试图写入管道不存在" 解决方法: 附参考链接: 1.https: ...

  6. java连接跳板机linux,VSCode Remote ssh跳板机配置(linux环境)

    VSCode真的是一款非常优秀的编辑器,配合各种插件就成为了一款称手的轻量级IDE,相信很多同学都有在服务器上跑实验的需求,我也不例外.一开始,我采用MobaXterm作为连接远程服务器的工具,但如果 ...

  7. VSCode REMOTE SSH

    登录服务器 1.安装 Remote Development 2.添加远程主机 3.输入user@host 然后回车确认 4.选择文件记录信息 可以通过Remote-SSH: Open Configur ...

  8. vscode 全项目替换_利用vscode插件提升前端国际化开发效率

    1. 起因 国际化是我们目前开发工作中非常重要的一环.对于老项目,我们可以通过便捷的方式对中文文案进行批量国际化:但是对于新增的功能或者模块开发,一般还是开发同学对文案逐个进行国际化.我自己的开发流程 ...

  9. vscode java settings设置_兼容vscode插件的主题服务

    背景介绍 今年有幸参与了 IDE 共建项目组,负责主题服务的设计实现.说到主题服务,我们可能立马会想到 VSCODE 丰富的主题生态.VSCODE 有着庞大的插件市场,主题插件是其中非常重要的一部分. ...

最新文章

  1. Android必备:Android的体系结构
  2. python作者叫什么-Python18:什么是字典
  3. 获取手机当前显示的ViewController
  4. mysql删除数据表show_数据库与表显示、创建、删除
  5. Java 动作事件_java按钮动作事件
  6. JavaScript练习笔记
  7. js中的对象类型与具体的对象
  8. Lydsy2017年4月月赛 抵制克苏恩
  9. java eden区_(转)可能是把Java内存区域讲的最清楚的一篇文章
  10. java工具类使用_Java工具类使用注意事项
  11. python怎样打开加密的文件_如何使用python加密多个文件
  12. Exception occurred during ITK-SNAP startup
  13. HTML班级网站实例(笔记1)
  14. 安卓手机wifi速度测试软件,手机WiFi网络测速专家
  15. 群体结构分析:用 phylip 构建进化树
  16. Java—ISBN号码问题
  17. 民航飞行学院计算机研究生就业,数据说话:文科硕士研究生就业变迁史
  18. 阿里云李飞飞:中国数据库的时与势
  19. mysql 一对多 count_MySQL COUNT的一对多总和
  20. 驱动文件中只有cat/inf/dll文件,怎么安装

热门文章

  1. Objective-C路成魔【11-多态性、动态类型和动态绑定】
  2. hdoj 1114 Piggy-Bank(完全背包+dp)
  3. nodejs对文件进行分页
  4. poj 1236 Network of Schools (强连通分支缩点)
  5. zoj 1454 Employment Planning
  6. 《孙子兵法》【火攻第十二】
  7. jQuery框架总体分析
  8. restful api例子php,如何通过PHP访问RESTful API
  9. java纯数字正则表达式_JAVA验证数字的正则表达式,来一发
  10. UI实用案例|黄金分割在界面设计中的应用