[筆記] R with Visual Studio Code (VS Code)

其實在用 VScode 之前,R 專用的 IDE: RStudio 也用得好好的,不過因為某人推坑加上之後也會想要學其它程式語言,不想要一個程式語言就一個 IDE,所以就來試試 VScode了。 VScode 本身只是個編輯器,所以對需要邊寫 code 也邊在像 RStudio 一樣執行程式碼看結果,但又不想透過另外開 terminal 來執行,就會需要多一點設定的動作了。

先說使用心得好了,用過後覺得 VScode 跟 RStudio 使用起來沒有差太多,可能是我沒有需要太多功能吧(?) 所以對只寫 R 的人來說,RStudio 用習慣的話,我覺得是沒有什麼必要換成 VScode,而且有些自動補齊的功能不知道是我沒設定好還是怎樣,RStudio 還是的功能還是比較完整,畢竟是專屬的 IDE 嘛~ 不過 VScode 介面不知為何看起來就是比較舒服順眼,所以應該還是會繼續看看有什麼 extension 可以加或改設定可以讓它用起來更順手,有找到什麼好用的東西再來介紹吧XD

Install vscode

1
2
3
4
5
# windows
$ choco install vscode

# mac
$ brew cask install visual-studio-code

或著也可以去 官網 選擇相對應作業系統的安裝檔下載來安裝

Install extensions

VScode 本身只是個編輯器,所以如果不只是想要編輯,同時也想在 VScode 上執行 script 的話,就需要靠與各語言接口的 extensions 啦。以 R 來說,需要安裝的基本 extension 有 R, R LSP Client 這兩個。

  • R support for Visual Studio Code
    VS Code 的 R 核心 extension,具有語法高亮、程式碼執行等功能,裝了之後就可以像在 RStudio 裡面一樣使用 ctrl + enter 來執行選取的程式碼惹。

  • R LSP Client
    有了它就可以進行程式碼補全、檢視 R function 定義等。不過想讓這個 extension 功能實踐,還需要安裝額外的 package: languageserver 才能讓 VScode 跟 R 連動。

    1
    install.packages("languageserver")

Setting path of R

必須的 extensions 安裝完之後,還有一些路徑需要設定,VScode 才會跟你想要使用的語言來做連動,以 R 來說有兩個路徑要設,r.rterm 與 r.Lsp。

  • 按下 F1,輸入 Preferences: Open Settings 進入設定的頁面
  • 看作業系統選擇輸入 r.term.macr.term.windows 以及 r.lsp
  • 在指定路徑的地方輸入自己電腦存放 R 執行檔 R.exe 的路徑,記得要找到對的執行檔路徑!像我 mac 不知為何有兩個 R.exe 第一次設到不是平常用的那一個執行檔路徑,結果一堆 package 都沒有orz 好在後來找到平常使用的那個路徑了…像我 mac 的路徑是 /Library/Frameworks/R.framework/Versions/3.5/Resources/bin/R; windows 的則是 C:\Program Files\R\R-3.5.0\bin\x64\R.exe

radian (rtichoke)

以上都設定好後,應該就可以在 VS Code 中執行 R 程式碼了,不過這時候底下 terminal 呼叫出來的是官方的 R 終端,這個終端只有基本執行程式碼的功能,就像你直接打開 R.exe 來執行程式碼那樣樸素,對用慣了華麗又人性化的 RStudio Console 的人來說應該會超不習慣而且會覺得很難用。

好在有 radian (舊名為 rtichoke) 幫忙實現多行編輯、語法高亮和自動補齊等功能,用起來不輸 RStudio 太多。不過因為這個軟體本身是 Python 寫,所以需要安裝 Python 然後用 pip 來安裝。

  • 安裝 Python (推薦用 anaconda 來安裝 Python)
  • 開啟 Anaconda Prompt, 輸入 pip install -U radian
  • 待安裝完成後輸入 radian 測試是否安裝成功,有進到 R 裡面就代表成功啦!

    1
    2
    3
    > radian
    R version 3.5.3 (2019-03-11) -- "Great Truth"
    Platform: x86_64-apple-darwin15.6.0 (64-bit)
  • 回到終端機,輸入 where radian 找到 radian.exe 的路徑

    1
    2
    > where radian
    /usr/local/anaconda3/bin/radian
  • 接著在 VS Code 中重新設定 r.rterm.windows/ r.rterm.mac 以及 r.lsp.path 為 rtichoke.ext 的路徑

  • 打開 r.rterm.option 的配置檔案 (.json),取消掉這個選項下的 –no-save 和 no-restore 參數 (如果原本沒有參數的話,直接增加 line 8-10 就可以了)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
    "r.rterm.mac": "/usr/local/anaconda3/bin/radian",
    "files.associations": {
    "*.rmd": "markdown"
    },
    "r.lsp.path": "/usr/local/anaconda3/bin/radian",
    "r.lsp.debug": true,
    "r.rterm.option": [
    // "--no-save",
    // "--no-restore",
    "--no-site-file"
    ]
    }
  • 重啟 VScode 應該就可以像下面這樣看到華麗的 terminal 啦~!

Keyboard shortcut

快捷鍵的設定可以在設定當中的 Keyboard Shortcut 介面中作設定,有一些比較特殊的指令也可以透過直接修改 keybindings.json 來做設定(按下 {} 來開啟設定的 .json)。

像是以往在 RStudio 常用的 <- 以及 %>% 的快捷鍵設定就可以像下面這樣操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
{
"key": "alt+-",
"command": "type",
"args": {
"text": " <- "
},
"when": "editorTextFocus"
},
{
"key": "cmd+shift+m",
"command": "type",
"args": {
"text": " %>% "
},
"when": "editorTextFocus"
}
]

其中 key 指的就是快捷鍵的部分,多個快捷鍵可以用 + 來做連接;command 為命令,這裡的 type 指的就是輸入; args 就是快捷鍵輸入的內容,寫在 text 之後;when 則是指定快捷鍵在哪個地方有作用,後面指定的 editorTextFocus 指的是在編輯器的時候。

Reference

在VSCode 中配置R 语言运行环境
radian
VS Code 系列 1:提升 R 和 Python 使用體驗
在VSCode中愉快地使用R