03在 VS Code 中配置 R 与 Quarto

安装 R 与 Quarto 扩展,连接 languageserver 和 httpgd,并统一文件关联、终端与预览快捷键。

2026-08-10
VS CodeRQuartolanguageserverhttpgd
本章目录 · 7

VS Code 本身不包含 R 语言服务。一个精简的 R & Quarto Profile 只需要两项核心扩展,再由 R package 提供补全、诊断和图形设备。

安装扩展与 R package

code --install-extension reditorsupport.r
code --install-extension quarto.quarto

在 R 中安装语言服务和交互式图形设备:

install.packages(c("languageserver", "httpgd"))

R extension 使用 languageserver 提供补全、跳转、hover 与诊断,使用 httpgd 在 VS Code 中显示和管理图形。vscode-R

Quarto extension 提供 .qmd 高亮、YAML 补全、render/preview 命令,以及 R、Python 等代码单元的运行入口。Quarto for VS Code

统一文件关联

.Rmd 应交给 rmd 语言模式,而不是普通 Markdown:

{
  "files.associations": {
    "*.R": "r",
    "*.r": "r",
    "*.Rmd": "rmd",
    "*.rmd": "rmd",
    "*.qmd": "quarto"
  }
}

文件关联只决定编辑器采用哪套语言能力,不决定最终由 R Markdown 还是 Quarto render。

保持 R 设置最小

{
  "r.rterm.option": ["--no-save", "--no-restore"],
  "r.bracketedPaste": true,
  "r.plot.useHttpgd": true,
  "r.source.encoding": "UTF-8",
  "[r]": {
    "editor.tabSize": 2,
    "editor.insertSpaces": true
  },
  "[rmd]": {
    "editor.wordWrap": "on"
  }
}

--no-save--no-restore 避免终端会话自动保存或恢复 .RDatabracketedPaste 让多行代码发送到支持该能力的终端时保持完整;httpgd 则需要前面安装对应 R package。

通常不需要同时设置 r.rterm.windowsr.rpath.windowsr.lsp.pathr.libPaths。先让扩展从 PATH 和 R 自身环境中发现程序与 package library。只有自动发现失败时,才把 r.rterm.windows 作为本机设置,并避免提交其绝对路径。

R package library 应由 R_LIBS_USER.Renviron 或项目环境管理,不要再在 VS Code 的 r.libPaths 和终端环境变量中复制一遍。具体方法见 配置 R 启动文件与默认选项

Session watcher 按需开启

Session watcher 可以让 VS Code 跟踪 global environment、工作区对象、帮助页面和当前工作目录。需要这些面板时设置:

{
  "r.sessionWatcher": true
}

它要求 R terminal 与扩展正确连接。只需要发送代码到普通终端、或远端环境难以建立 watcher 时,可以保持关闭。出现问题先检查 R extension 的 Output,而不是同时改动 LSP、terminal 和 library path。

运行 R Markdown 与 Quarto

Quarto 文档通常使用 Quarto: Preview;只需要生成最终文件时使用 Quarto: Render。R Markdown 则使用 R extension 提供的 knit 命令。

如果默认快捷键与已有操作冲突,可以使用双段组合键:

[
  {
    "key": "ctrl+shift+k ctrl+shift+p",
    "command": "quarto.preview",
    "when": "!quartoRenderScriptActive"
  },
  {
    "key": "ctrl+shift+k ctrl+shift+p",
    "command": "quarto.previewScript",
    "when": "quartoRenderScriptActive"
  },
  {
    "key": "ctrl+shift+k ctrl+shift+k",
    "command": "r.knitRmd",
    "when": "editorTextFocus && editorLangId == 'rmd'"
  }
]

同一按键可以根据 when 条件调用不同命令。保存后在 Keyboard Shortcuts editor 中输入该组合键,确认没有残留的单段快捷键抢先触发。

R & Quarto Profile 的扩展清单

reditorsupport.r
quarto.quarto

reditorsupport.r-syntax 等依赖扩展由主扩展管理,不必为了复现环境把每个依赖都手工列出。需要写 Quarto 中的 Python notebook 时,再从 Python & Jupyter Profile 引入相应扩展;纯 R 工作不必安装整套 Python 和 Jupyter。

验证环境

在 VS Code 的 R terminal 中运行:

R.version.string
.libPaths()
requireNamespace("languageserver", quietly = TRUE)
requireNamespace("httpgd", quietly = TRUE)

随后打开一个 .R 文件测试补全和诊断,再打开一个最小 .qmd 执行 Preview。这样可以区分 R terminal、语言服务和 Quarto render 三条链路,避免某一步失败时重装全部扩展。