VS Code 系列 1:提升 R 和 Python 使用体验

已经攒了一系列 VS Code 写作计划和素材,之前也发过几篇基础知识的思维导图(见文末)。不过一直不知道该从哪里开始第一篇文章,如果推荐给身边的人,他们可能最关心的是用 VS Code 日常写简单的 R 和 Python 代码体验如何。那就从这里开始吧。

本文以 PC 作为安装配置示例,Mac 基本类似且部分内容体验可能更优。

为什么是 VS Code

既然是系列文章的开篇,姑且对主题按下不表先介绍一下 VS Code。

VS Code 的全称是 Visual Studio Code,官方给他的定义是官方定义是一个免费的、开源的跨平台编辑器。相对于各种 IDE 而言,编辑器则相对更轻量,更侧重于文件或者文件夹而非宏大的项目。

2011 年底,微软从 IBM 请 《设计模式》的作者同时也是 Eclipse 掌舵人之一的 Erich Gamma 来开发一款优雅的在线开发工具(后来的 Manaco Editor),2015年他把这款在线工具移植到了桌面平台,也就有了如今 VS Code 。师承 Eclipse 同时又吸取 Eclipse 的教训,他们决定核心只做一个高性能的轻量级编辑器,个性化功能交给插件系统来完成且要把插件系统运行在主进程之外。同时,VS Code 希望让开发者在编辑器里拥有 IDE 类似的开发体验,比如对源代码的智能理解、图形化调试工具和版本管理等等。总之,就是在 IDE 和编辑器中找到一个比较理想的平衡。

在很多人的印象中,微软一直是一个站在开源世界对立面,靠专利官司和垄断挣钱的公司,但其实微软近几年一直是 GitHub 贡献开源代码最活跃的公司,活跃到现在已经把 GitHub 收购了(黑人问号脸)。而在所有微软的开源项目中,star 最高的 repo 就是 VS Code 编辑器。VS Code 以 MIT 协议开源,所有的开发过程和反馈渠道完全在 GitHub 开放,同时 VS Code 提供了统一的 Language Server Protocol 和 Code Debugging Protocol API,所有语言的开发和都能够通过实现两个 API 在 VS Code 上得到类似 IDE 的开发和调试体验。

如果你是一个 R 语言用户,RStudio 一定是首选 IDE,如果你是一个 Python 用户,Pycharm 则是大多数人的编辑器。但如果你平时既要用点 R,也要用点 Python,偶尔感觉这些 IDE 有点臃肿或者不想在两个 IDE 中反复切换,那么 VS Code 是一个不错的选择。

VS Code 有两个不同版本:稳定版(Stable)每月发布更新一次;预览版(Insiders)每个工作日更新一个版本。当然,你也可以同时安装两个版本互不影响。

虽然我一直不喜欢微软的 office ,但是 VS Code 又让我对微软增加了不少好看。现在我日常工作中,轻度码字、写脚本、阅读 PDF 和 Excel 文本甚至查看压缩文件等工作都可以在它上面完成。离「只用一个 VS Code 完成所有事情」的目标已经不太远了。当然,如果还有什么需求没有实现,最牛的是学习自己去写一个插件。

安装 R 和 Python

因为这篇文章的写作目的是「用 VS Code 愉快地使用 R 和 Python 」,所以默认看官已经可以自主地在电脑上安装 R 和 Python ;因为是系列文章的首篇,所以暂且不涉及复杂操作和各种使用技巧;因为默认大家是同时轻度使用 R 和 Python 所以暂时不涉及代码调试和版本管理等内容。在后面的文章中这些都会提到。

对于 Windows 用户 R 可以在 官网 下载,Python 建议安装 anaconda 的 Python3 版本。另外这里有一篇 关于R安装注意事项 的文章可以作为参考。

配置 R 插件

VS Code 对语言的支持方式是提供统一的开发 API,即 Language Server Protocol。各种语言可以能够通过这个 API 在 VS Code 上得到类似 IDE 的体验,这种服务在 VS Code 中称为语言服务

语言服务会根据我们的项目、当前文件和光标所在位置为我们提供一个建议列表,包括在当前光标位置下我们可能会输入的各种代码函数。随着字符的输入 VS Code 会根据字符输入内容自动对列表进行过滤。

目前 JavaScript、Python、PHP 等几大主流语言在 VS Code 中都已经有很完善的支持,但是 R 核心插件还是第三方贡献的,想要配置的顺手还需要一些操作。实现 R 语言服务必需要有如下前两个插件(插件管理可以在左侧侧边栏找到,然后在搜索框里搜索R即可)。

R support for Visual Studio Code

这个插件是 VS Code 中 R 的核心插件,具有语法高亮,基础代码片段和代码执行等功能。例如你可以在编辑器中选择某几行内容,然后使用ctrl + enter将代码发送到终端执行。

R LSP Client

这个插件在主页的介绍是

R language support for VS Code, powered by the R language server.

也就是我们上文提到的「Language Server Protocol」,有了这个它就可以进行代码补全、查看函数定义以及参数预览了。不过想让它生效还需要下面几个小步骤:

在 R 中安装 languageserver

install.packages("languageserver"),只有安装了这个包才能实现 R 和 编辑器的同步。

在 VS Code 中设置正确的 R 路径

打开设置界面,在搜索框中输入 r.rterm,找到 Rterm:Windows ,在编辑栏中输入你的 R 可执行文件位置。如果是默认安装的 R 3.5.1 版本,位置应该是C:\Program Files\R\R-3.5.1\bin\x64\R.exe

在 VS Code 中设置正确的 R LSP 路径

和上面的方法相同,只不过这次搜索r.rpath.lsp,目录和你的r.rtrem.windows 一致即可。

完成上面几项设置,接下来使用ctrl+shist+p 调出命令面板,然后输入reload选择 Reload Window 执行 ,重启 VS Code 即可。

目前 VS Code 已经实现了界面化设置,但是其本质是一个json 格式的配置文件,你也可以在配置文件中进行修改和编辑。

radian

RStudio 中的 R Console 本身具备参数提示和补全等功能,很多人非常喜欢。然而到目前为止,如果直接在 VS Code 中执行 R 代码,它默认调用的是我们之前设置过的官方 R 终端,这个终端非常古老而且不友好。不过好在我们的「21 世纪 R console」 radian 即将登场。

说到 radian 有不少人都知道它可以实现多行编辑、语法高亮和自动完成等功能,用起来基本不输RStudio。不过他们中 99% 的人都是在 Linux 或者 macOS 中使用。因为这个软件本身是 Python 写的并且需要用命令行pip安装,很多 windows 用户心理嘀咕一句「tmd,windows 竟然不能用」然后卒,其实你是自己把自己放弃了。好在我还是那剩下的 1% 里在 Windows 使用 radian 的用户,使用方法如下。

  • 在上文中你应该已经成功使用 anaconda 在你的电脑里装好了 Python,现在打开Anaconda Prompt,也就是anaconda 自带的命令行工具。
  • 输入pip install -U rtichoke 安装 rtichoke
  • 安装完成后输入radian测试是否调用成功
  • 找到并进入你电脑里的anaconda scripts 目录,正常情况下是 C:\Users\youname\Anaconda3\Scripts\
  • 不出意外里面应该有一个 exe 文件,叫做 radian.exe,找到它并复制它的路径
  • 在 VS Code 中重新设置r.term.windowsradian.ext 路径
  • 找到r.rterm.option 选项,并在配置文件(json 格式)中注销掉这个选项下的--no-saveno-restore参数
  • 重启 VS Code 后大功告成

R 运行使用效果

现在 R 运行的配置工作已经完成,一起来看下效果。首先,我在工作项目中打开一个R 脚本 test.R,里面是一段plotly 测试代码。

  • 鼠标放在一个函数上自动出现函数功能和使用方法
  • 鼠标放在一个内置数据集自动出现数据集介绍
  • 鼠标放在一个 R 包上自动出现 R 包介绍
  • 输入部分函数自动提示
  • 鼠标在函数括号里自动出现参数提示
  • 选中部分代码,按一次ctrl+enter 自动进入集成终端,也就是 rtichoke
  • 再按一次ctrl+enter 自动执行代码并输出结果

如果想调用 View 等外部输出也是可以的,比如View(tmp2) 会弹出一个 R 默认终端的独立显示框,比如测试代码最后是print 一个 plotly 的绘图结果,那么它会自动调用你的默认浏览器进行输出。

自定义 R 必备快捷键

如果你是一个老实的 R 语言用户,那么一定不会用 = 代替 <-,但是 <- 需要按两下键盘而且这两个键位置还挺远,更难过的是因为你用了语法提示如果你在<- 两端没有加上空格它还会给你出现「大破浪」下划线恶心你。在 RStudio 中你可以使用 alt + - 一气呵成输入这四个符号<-,在 VS Code 中必须也可以。

打开 Keyboard Shortcuts (快捷键是 ctrl+k ctrl+s),在搜索框中搜索alt+s,这个时候你会看到这个快捷键已经被绑定了(别慌),点开 json 文件我们去给这个快捷键设置不同情境下新的含义。

点开快捷键配置文件之后不要管左边的内容,直接去右边设置就好,配置方法如图(至于为什么这么写,后面会写专门的快捷键相关文章)。从此以后在 R 或者 Rmd 文件里alt+-就变成了和 RStudio 一样的快捷键。

配置 Python 插件

如果把 R 的配置搞定,Python 的配置就显得很简单了。想愉快地使用 Python 只需要安装一个Python 插件即可。

接下来设置默认的 Python 路径,如果是用 anaconda 默认安装路径应该是C:\Users\yourname\Anaconda3\python.exe ,这时使用的是默认 Python 解释器;与 R 同理,如果你想使用 anaconda 中的 ipython 那么可以把路径设置为 C:\Users\yourname\Anaconda3\Scripts\ipython.exe

错误提示和格式化

安装和配置

Python 默认的语法提示工具是 PyLint,也可以选择其他的 linter 工具,比如 flake8,flake8 是 Python 官方发布的一款静态代码检查工具,如果想使用它的话首先在 anaconda 的命令行工具中安装pip install flake8;另外,在保存代码的时候 VS Code 可以自动进行 code formatting ,这个功能默认是关闭的且工具是 autopep8 ,如果想使用 yafp,则继续在命令行工具中安装 pip install yapf

安装好这两个工具之后在 VS Code 的配置文件中进行设置:

"python.linting.enabled": true
"python.linting.flake8Enabled": true,
"python.formatting.provider": "yapf"

查看错误和修改

在集中终端的 PROBLEMS 可以查看代码中存在的问题。如下图所示,错误报告中会提示问题,错误编号和所在行数位置,点击某一个具体的问题后编辑器就会自动定位到相应的行数。

把某类文件关联为Python

在有些时候我们想借助某些语法的高亮特性,但是默认文件后缀却不是编辑能识别的内容。例如,我日常会用到的一类snakfile为后缀的文件。那么可以做如下设置

"files.associations": {
        "Snakefile": "python"
    }

禁止对某些文件进行检查

从上面的截图可以发现,我一个文件中竟然有 915 处问题,看来我这个智商基本就告别 Python 了。如果为了自我麻痹,我可以在设置中关闭代码检查,但真实情况是这个文件并不是一个真正的 Python 脚本,我只是想借用Python 的语法高亮而已。

针对这种情况,我们可以选择单独对某一类(后缀)文件排除语法检查。比如我用 Python 语法高亮的这类非Python 文件后缀通常我会被我命名为 snakefile ,那就可以进行如下设置:

"python.linting.ignorePatterns": [
        ".vscode/*.py",
        "**/site-packages/**/*.py",
        "*.snakefile"
    ]

重启之后,在打开原文件,满屏的大波浪红线就无影无踪了。

注意,如果想让上面配置生效,需要确保"python.jediEnabled": ture

当然,因为 VS Code 对 Python 的完善支持,在设置中还有非常多的相关参数可以调整,你可以在设置的搜索框中输入python 浏览一下,但因为我们本文预设是轻度编写代码就不在展开了。

另外,也可以参考官方的一些 Python 使用介绍

windows 用户的一个痛点

在文章开始,我说「本文以 PC 作为安装配置示例,Mac 基本类似且部分内容体验可能更优」,现在就表达一下这个小小的遗憾。随着 win10 的升级,Windows 已经可以安装自己的 Ubuntu 系统 「Windows Subsystem for Linux」,但是系统自带的 bash 那叫一个丑陋和难用。由于 VS Code 在集成终端上下了不少功夫,其实我一直都把它当成我的简洁版「XShell」来使用,体验也非常好。如果你想试试,只需要在配置文件中把terminal.integrated.shell.windows 由默认的C:\\Windows\\System32\\cmd.exe 改为C:\\Windows\\System32\\bash.exe,这个具体内容以后再写。但是如果 在这个 bash 里调试 Python 是会出问题的,修改起来即便能姑且使用也是拆了东墙补西墙。我暂时的解决方法是在预览版的 VS Code 中修改了默认的 terminal,在稳定版里还用 cmd.exe。


VS Code 基础知识思维导图

VS Code 学习记:如何快速掌握新编辑器
VS Code 学习记:Vs Code 前世今生及设计哲学
VS Code 学习记:如何快速上手
VS Code 学习记:如何双手不离开键盘

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容