Interacting with R terminals - REditorSupport/vscode-R GitHub Wiki

Creating R terminal

In VS Code window, press F1 (or Ctrl + Shift + P) and choose "R: Create R terminal" command, then the VS Code terminal will be revealed and an R terminal will be launched.

By default, the official R terminal is launched.

R

We recommend radian as a better alternative.

radian

If the R session watcher is enabled, then it will attach to the R session whenever a new R terminal is created. The status of the session watcher is shown in the status bar like below:

status

Sending code to R terminals

By default, if there is no active R terminal, then a new R terminal will be created before sending code to it. To always send code to the active terminal without creating a new one, turn on r.alwaysUseActiveTerminal in VS Code settings.

The behavior of sending code to the terminal is following:

  • If a range of code is selected, then the selected code will be sent to the terminal.
  • If no code is selected, then an executable range of code will be sent to the terminal and the cursor will move to the next line.

Using multiple R terminals

Each time "R: Create R terminal" is executed, a new R terminal is created. The user could switch between these R terminals, and customize the icon color and the label of each terminal.

R terminals

To make the session watcher attach the R session of the current R terminal, click the status bar item "R: (not attached)" or "R: #PID" if a session is previously attached.

Using self-managed R terminals

Self-managed R terminals could be useful if one needs one or more R sessions to be preserved so that closing the VS Code window does not terminate the R sessions. On Linux and macOS, both screen and tmux could be used to preserve any number of R sessions or any other terminal programs in a customizable layout.

radian in tmux

To make self-managed R sessions behave like those created by "R: Create R terminal", the following code should be added to ~/.Rprofile:

if (interactive() && Sys.getenv("RSTUDIO") == "") {
  Sys.setenv(TERM_PROGRAM = "vscode")
  source(file.path(Sys.getenv(
    if (.Platform$OS.type == "windows") "USERPROFILE" else "HOME"
  ), ".vscode-R", "init.R"))
}

Then starting an R terminal anywhere will request the session watcher to attach the R session.

Control console print width and text wrapping

On some systems, users may notice that the full width of the R console is not being used. In the example below, we see that both the LETTERS vector and the columns of our dummy data frame are being hard wrapped at 80 characters, resulting in unnecessary overflow of rows instead of utilizing the available horizontal space.

Screenshot 2025-10-03 at 2 38 03 PM

The culprit in such cases is most likely a hard-coded width option in your system-wide .Rprofile. You can check by running

getOption("width")

Changing this width/wrapping constraint is a simple matter of overriding the default width option. You can provide a hard-coded value like, say, 120 or 160. Or, you can try invoking the "COLUMNS" system environment variable (caveat: this may not be available on your system). Either way, you will probably want to set the sister setWidthOnResize option to TRUE at the same time, so that the prompt width dynamically adjusts along with your VS Code terminal (e.g., if you resize the window).

options(width=120)                     # set hard-coded value
# options(width=Sys.getenv("COLUMNS")) # set on available columns (may not work on every system)
options(setWidthOnResize=TRUE)         # automatically reset the width if the terminal window is changed
Screenshot 2025-10-03 at 2 39 50 PM

Here we have (temporarily) set the width options directly in our live R session. But you may wish to add them to your .Rprofile for a persistent change across sessions.

⚠️ **GitHub.com Fallback** ⚠️