This article will be updated to reflect the latest vscode-R features.
In the previous post, I introduced the features
languageserver
enables the code editor to provide when we are editing R scripts. But this is only part of the story. A major part
of using R is about exploring data interactively, which requires some extent of interactivity between the code
editor and a live R session.
The latest vscode-R implements an experimental feature called R session watcher, which makes it possible for VSCode to communicate with any live R session under a wide range of scenarios. To try it, we just need to follow the steps in project README.
To work with R more smoothly, I recommend using radian as the default R console, which has syntax highlight, auto-completion, better support of sending code chunks (bracket-paste mode), and better support of unicode characters.
My typical workflow is that I connect to a server machine via SSH using
Remote Development in VSCode. And I always prefer
self-managed R sessions in a tmux window for persistence. Therefore, I need the following VSCode options:
{
"r.alwaysUseActiveTerminal": true,
"r.bracketedPaste": true,
"r.sessionWatcher": true
}
where r.alwaysUseActiveTerminal allows me to always send code to active terminal rather than vscode-R helps me to start an
R session which is terminated when VSCode exits; r.bracketedPaste is required to work with radian to allow sending large code
chunks which official R terminal cannot handle correctly.
This makes it easy to work with multiple R sessions. I only need to start a tmux session, open multiple windows, and start
as many R sessions as I need in these windows. All these R sessions will be safely preserved when VSCode exits. And I can attach to
the tmux session on another machine and restore everything in my need.
Another thing is that although langaugeserver supports document formatting based on styler,
it is slow for large scripts. Therefore, I’d rather it is disabled with the following VSCode option and I use Format Document on demand.
{
"[r]": {
"editor.formatOnSave": false
}
}
Following are some pictures to demonstrate how VSCode could interactive with a live R session.
- Show symbol value on hover


- Basic plot and ggplot2


- Show htmlwidgets


- Show shiny apps

- Show code profiling with profvis

- View data frame

Hovering on and selecting rows:

- View list

- View global environment

- View function

- View vector

- View object

- Show help documentation
Using native R help server:

Using VSCode R help viewer:


- Session symbol completion








- Show plot history

- RStudio addin support
