VS Code 系列 1:提升 R 和 Python 使用體驗

已經(jīng)攢了一系列 VS Code 寫作計劃和素材唤冈,之前也發(fā)過幾篇基礎(chǔ)知識的思維導(dǎo)圖(見文末)全肮。不過一直不知道該從哪里開始第一篇文章,如果推薦給身邊的人蕴掏,他們可能最關(guān)心的是用 VS Code 日常寫簡單的 R 和 Python 代碼體驗如何蹬挤。那就從這里開始吧缚窿。

本文以 PC 作為安裝配置示例,Mac 基本類似且部分內(nèi)容體驗可能更優(yōu)焰扳。

為什么是 VS Code

既然是系列文章的開篇倦零,姑且對主題按下不表先介紹一下 VS Code。

VS Code 的全稱是 Visual Studio Code吨悍,官方給他的定義是官方定義是一個免費的扫茅、開源的跨平臺編輯器。相對于各種 IDE 而言畜份,編輯器則相對更輕量诞帐,更側(cè)重于文件或者文件夾而非宏大的項目欣尼。

2011 年底爆雹,微軟從 IBM 請 《設(shè)計模式》的作者同時也是 Eclipse 掌舵人之一的 Erich Gamma 來開發(fā)一款優(yōu)雅的在線開發(fā)工具(后來的 Manaco Editor),2015年他把這款在線工具移植到了桌面平臺愕鼓,也就有了如今 VS Code 钙态。師承 Eclipse 同時又吸取 Eclipse 的教訓(xùn),他們決定核心只做一個高性能的輕量級編輯器菇晃,個性化功能交給插件系統(tǒng)來完成且要把插件系統(tǒng)運行在主進程之外册倒。同時,VS Code 希望讓開發(fā)者在編輯器里擁有 IDE 類似的開發(fā)體驗磺送,比如對源代碼的智能理解驻子、圖形化調(diào)試工具和版本管理等等」啦樱總之崇呵,就是在 IDE 和編輯器中找到一個比較理想的平衡。

在很多人的印象中馅袁,微軟一直是一個站在開源世界對立面域慷,靠專利官司和壟斷掙錢的公司,但其實微軟近幾年一直是 GitHub 貢獻開源代碼最活躍的公司,活躍到現(xiàn)在已經(jīng)把 GitHub 收購了(黑人問號臉)犹褒。而在所有微軟的開源項目中抵窒,star 最高的 repo 就是 VS Code 編輯器。VS Code 以 MIT 協(xié)議開源叠骑,所有的開發(fā)過程和反饋渠道完全在 GitHub 開放李皇,同時 VS Code 提供了統(tǒng)一的 Language Server Protocol 和 Code Debugging Protocol API,所有語言的開發(fā)和都能夠通過實現(xiàn)兩個 API 在 VS Code 上得到類似 IDE 的開發(fā)和調(diào)試體驗宙枷。

如果你是一個 R 語言用戶疙赠,RStudio 一定是首選 IDE,如果你是一個 Python 用戶朦拖,Pycharm 則是大多數(shù)人的編輯器圃阳。但如果你平時既要用點 R,也要用點 Python璧帝,偶爾感覺這些 IDE 有點臃腫或者不想在兩個 IDE 中反復(fù)切換捍岳,那么 VS Code 是一個不錯的選擇。

VS Code 有兩個不同版本:穩(wěn)定版(Stable)每月發(fā)布更新一次睬隶;預(yù)覽版(Insiders)每個工作日更新一個版本锣夹。當(dāng)然,你也可以同時安裝兩個版本互不影響苏潜。

雖然我一直不喜歡微軟的 office 银萍,但是 VS Code 又讓我對微軟增加了不少好看。現(xiàn)在我日常工作中恤左,輕度碼字贴唇、寫腳本、閱讀 PDF 和 Excel 文本甚至查看壓縮文件等工作都可以在它上面完成飞袋。離「只用一個 VS Code 完成所有事情」的目標(biāo)已經(jīng)不太遠了戳气。當(dāng)然,如果還有什么需求沒有實現(xiàn)巧鸭,最牛的是學(xué)習(xí)自己去寫一個插件瓶您。

安裝 R 和 Python

因為這篇文章的寫作目的是「用 VS Code 愉快地使用 R 和 Python 」,所以默認(rèn)看官已經(jīng)可以自主地在電腦上安裝 R 和 Python 纲仍;因為是系列文章的首篇呀袱,所以暫且不涉及復(fù)雜操作和各種使用技巧;因為默認(rèn)大家是同時輕度使用 R 和 Python 所以暫時不涉及代碼調(diào)試和版本管理等內(nèi)容郑叠。在后面的文章中這些都會提到夜赵。

對于 Windows 用戶 R 可以在 官網(wǎng) 下載,Python 建議安裝 anaconda 的 Python3 版本锻拘。另外這里有一篇 關(guān)于R安裝注意事項 的文章可以作為參考油吭。

配置 R 插件

VS Code 對語言的支持方式是提供統(tǒng)一的開發(fā) API击蹲,即 Language Server Protocol。各種語言可以能夠通過這個 API 在 VS Code 上得到類似 IDE 的體驗婉宰,這種服務(wù)在 VS Code 中稱為語言服務(wù)歌豺。

語言服務(wù)會根據(jù)我們的項目、當(dāng)前文件和光標(biāo)所在位置為我們提供一個建議列表心包,包括在當(dāng)前光標(biāo)位置下我們可能會輸入的各種代碼函數(shù)类咧。隨著字符的輸入 VS Code 會根據(jù)字符輸入內(nèi)容自動對列表進行過濾。

目前 JavaScript蟹腾、Python痕惋、PHP 等幾大主流語言在 VS Code 中都已經(jīng)有很完善的支持,但是 R 核心插件還是第三方貢獻的娃殖,想要配置的順手還需要一些操作值戳。實現(xiàn) R 語言服務(wù)必需要有如下前兩個插件(插件管理可以在左側(cè)側(cè)邊欄找到,然后在搜索框里搜索R即可)炉爆。

R support for Visual Studio Code

這個插件是 VS Code 中 R 的核心插件堕虹,具有語法高亮,基礎(chǔ)代碼片段和代碼執(zhí)行等功能芬首。例如你可以在編輯器中選擇某幾行內(nèi)容赴捞,然后使用ctrl + enter將代碼發(fā)送到終端執(zhí)行。

R LSP Client

這個插件在主頁的介紹是

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

也就是我們上文提到的「Language Server Protocol」郁稍,有了這個它就可以進行代碼補全赦政、查看函數(shù)定義以及參數(shù)預(yù)覽了。不過想讓它生效還需要下面幾個小步驟:

在 R 中安裝 languageserver

install.packages("languageserver")耀怜,只有安裝了這個包才能實現(xiàn) R 和 編輯器的同步恢着。

在 VS Code 中設(shè)置正確的 R 路徑

打開設(shè)置界面,在搜索框中輸入 r.rterm封寞,找到 Rterm:Windows 然评,在編輯欄中輸入你的 R 可執(zhí)行文件位置。如果是默認(rèn)安裝的 R 3.5.1 版本狈究,位置應(yīng)該是C:\Program Files\R\R-3.5.1\bin\x64\R.exe

在 VS Code 中設(shè)置正確的 R LSP 路徑

和上面的方法相同,只不過這次搜索r.rpath.lsp盏求,目錄和你的r.rtrem.windows 一致即可抖锥。

完成上面幾項設(shè)置,接下來使用ctrl+shist+p 調(diào)出命令面板碎罚,然后輸入reload磅废,選擇 Reload Window 執(zhí)行 ,重啟 VS Code 即可荆烈。

目前 VS Code 已經(jīng)實現(xiàn)了界面化設(shè)置拯勉,但是其本質(zhì)是一個json 格式的配置文件竟趾,你也可以在配置文件中進行修改和編輯。

radian

RStudio 中的 R Console 本身具備參數(shù)提示和補全等功能宫峦,很多人非常喜歡岔帽。然而到目前為止,如果直接在 VS Code 中執(zhí)行 R 代碼导绷,它默認(rèn)調(diào)用的是我們之前設(shè)置過的官方 R 終端犀勒,這個終端非常古老而且不友好。不過好在我們的「21 世紀(jì) R console」 radian 即將登場妥曲。

說到 radian 有不少人都知道它可以實現(xiàn)多行編輯贾费、語法高亮和自動完成等功能,用起來基本不輸RStudio檐盟。不過他們中 99% 的人都是在 Linux 或者 macOS 中使用褂萧。因為這個軟件本身是 Python 寫的并且需要用命令行pip安裝,很多 windows 用戶心理嘀咕一句「tmd葵萎,windows 竟然不能用」然后卒箱玷,其實你是自己把自己放棄了。好在我還是那剩下的 1% 里在 Windows 使用 radian 的用戶陌宿,使用方法如下锡足。

  • 在上文中你應(yīng)該已經(jīng)成功使用 anaconda 在你的電腦里裝好了 Python,現(xiàn)在打開Anaconda Prompt壳坪,也就是anaconda 自帶的命令行工具舶得。
  • 輸入pip install -U rtichoke 安裝 rtichoke
  • 安裝完成后輸入radian測試是否調(diào)用成功
  • 找到并進入你電腦里的anaconda scripts 目錄,正常情況下是 C:\Users\youname\Anaconda3\Scripts\
  • 不出意外里面應(yīng)該有一個 exe 文件爽蝴,叫做 radian.exe沐批,找到它并復(fù)制它的路徑
  • 在 VS Code 中重新設(shè)置r.term.windowsradian.ext 路徑
  • 找到r.rterm.option 選項,并在配置文件(json 格式)中注銷掉這個選項下的--no-saveno-restore參數(shù)
  • 重啟 VS Code 后大功告成

R 運行使用效果

現(xiàn)在 R 運行的配置工作已經(jīng)完成蝎亚,一起來看下效果九孩。首先,我在工作項目中打開一個R 腳本 test.R发框,里面是一段plotly 測試代碼躺彬。

  • 鼠標(biāo)放在一個函數(shù)上自動出現(xiàn)函數(shù)功能和使用方法
  • 鼠標(biāo)放在一個內(nèi)置數(shù)據(jù)集自動出現(xiàn)數(shù)據(jù)集介紹
  • 鼠標(biāo)放在一個 R 包上自動出現(xiàn) R 包介紹
  • 輸入部分函數(shù)自動提示
  • 鼠標(biāo)在函數(shù)括號里自動出現(xiàn)參數(shù)提示
  • 選中部分代碼,按一次ctrl+enter 自動進入集成終端梅惯,也就是 rtichoke
  • 再按一次ctrl+enter 自動執(zhí)行代碼并輸出結(jié)果

如果想調(diào)用 View 等外部輸出也是可以的宪拥,比如View(tmp2) 會彈出一個 R 默認(rèn)終端的獨立顯示框,比如測試代碼最后是print 一個 plotly 的繪圖結(jié)果铣减,那么它會自動調(diào)用你的默認(rèn)瀏覽器進行輸出她君。

自定義 R 必備快捷鍵

如果你是一個老實的 R 語言用戶,那么一定不會用 = 代替 <-葫哗,但是 <- 需要按兩下鍵盤而且這兩個鍵位置還挺遠缔刹,更難過的是因為你用了語法提示如果你在<- 兩端沒有加上空格它還會給你出現(xiàn)「大破浪」下劃線惡心你球涛。在 RStudio 中你可以使用 alt + - 一氣呵成輸入這四個符號<-,在 VS Code 中必須也可以校镐。

打開 Keyboard Shortcuts (快捷鍵是 ctrl+k ctrl+s)亿扁,在搜索框中搜索alt+s,這個時候你會看到這個快捷鍵已經(jīng)被綁定了(別慌)灭翔,點開 json 文件我們?nèi)ソo這個快捷鍵設(shè)置不同情境下新的含義魏烫。

點開快捷鍵配置文件之后不要管左邊的內(nèi)容,直接去右邊設(shè)置就好肝箱,配置方法如圖(至于為什么這么寫哄褒,后面會寫專門的快捷鍵相關(guān)文章)。從此以后在 R 或者 Rmd 文件里alt+-就變成了和 RStudio 一樣的快捷鍵煌张。

配置 Python 插件

如果把 R 的配置搞定呐赡,Python 的配置就顯得很簡單了。想愉快地使用 Python 只需要安裝一個Python 插件即可骏融。

接下來設(shè)置默認(rèn)的 Python 路徑链嘀,如果是用 anaconda 默認(rèn)安裝路徑應(yīng)該是C:\Users\yourname\Anaconda3\python.exe ,這時使用的是默認(rèn) Python 解釋器档玻;與 R 同理怀泊,如果你想使用 anaconda 中的 ipython 那么可以把路徑設(shè)置為 C:\Users\yourname\Anaconda3\Scripts\ipython.exe

錯誤提示和格式化

安裝和配置

Python 默認(rèn)的語法提示工具是 PyLint误趴,也可以選擇其他的 linter 工具霹琼,比如 flake8,flake8 是 Python 官方發(fā)布的一款靜態(tài)代碼檢查工具凉当,如果想使用它的話首先在 anaconda 的命令行工具中安裝pip install flake8枣申;另外,在保存代碼的時候 VS Code 可以自動進行 code formatting 看杭,這個功能默認(rèn)是關(guān)閉的且工具是 autopep8 ,如果想使用 yafp忠藤,則繼續(xù)在命令行工具中安裝 pip install yapf

安裝好這兩個工具之后在 VS Code 的配置文件中進行設(shè)置:

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

查看錯誤和修改

在集中終端的 PROBLEMS 可以查看代碼中存在的問題楼雹。如下圖所示模孩,錯誤報告中會提示問題,錯誤編號和所在行數(shù)位置烘豹,點擊某一個具體的問題后編輯器就會自動定位到相應(yīng)的行數(shù)瓜贾。

把某類文件關(guān)聯(lián)為Python

在有些時候我們想借助某些語法的高亮特性,但是默認(rèn)文件后綴卻不是編輯能識別的內(nèi)容携悯。例如,我日常會用到的一類snakfile為后綴的文件筷笨。那么可以做如下設(shè)置

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

禁止對某些文件進行檢查

從上面的截圖可以發(fā)現(xiàn)憔鬼,我一個文件中竟然有 915 處問題龟劲,看來我這個智商基本就告別 Python 了。如果為了自我麻痹轴或,我可以在設(shè)置中關(guān)閉代碼檢查昌跌,但真實情況是這個文件并不是一個真正的 Python 腳本,我只是想借用Python 的語法高亮而已照雁。

針對這種情況蚕愤,我們可以選擇單獨對某一類(后綴)文件排除語法檢查。比如我用 Python 語法高亮的這類非Python 文件后綴通常我會被我命名為 snakefile 饺蚊,那就可以進行如下設(shè)置:

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

重啟之后萍诱,在打開原文件,滿屏的大波浪紅線就無影無蹤了污呼。

注意裕坊,如果想讓上面配置生效,需要確保"python.jediEnabled": ture

當(dāng)然燕酷,因為 VS Code 對 Python 的完善支持籍凝,在設(shè)置中還有非常多的相關(guān)參數(shù)可以調(diào)整,你可以在設(shè)置的搜索框中輸入python 瀏覽一下苗缩,但因為我們本文預(yù)設(shè)是輕度編寫代碼就不在展開了饵蒂。

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

windows 用戶的一個痛點

在文章開始酱讶,我說「本文以 PC 作為安裝配置示例退盯,Mac 基本類似且部分內(nèi)容體驗可能更優(yōu)」,現(xiàn)在就表達一下這個小小的遺憾浴麻。隨著 win10 的升級得问,Windows 已經(jīng)可以安裝自己的 Ubuntu 系統(tǒng) 「Windows Subsystem for Linux」,但是系統(tǒng)自帶的 bash 那叫一個丑陋和難用软免。由于 VS Code 在集成終端上下了不少功夫宫纬,其實我一直都把它當(dāng)成我的簡潔版「XShell」來使用,體驗也非常好膏萧。如果你想試試漓骚,只需要在配置文件中把terminal.integrated.shell.windows 由默認(rèn)的C:\\Windows\\System32\\cmd.exe 改為C:\\Windows\\System32\\bash.exe,這個具體內(nèi)容以后再寫榛泛。但是如果 在這個 bash 里調(diào)試 Python 是會出問題的蝌蹂,修改起來即便能姑且使用也是拆了東墻補西墻。我暫時的解決方法是在預(yù)覽版的 VS Code 中修改了默認(rèn)的 terminal曹锨,在穩(wěn)定版里還用 cmd.exe孤个。


VS Code 基礎(chǔ)知識思維導(dǎo)圖

VS Code 學(xué)習(xí)記:如何快速掌握新編輯器
VS Code 學(xué)習(xí)記:Vs Code 前世今生及設(shè)計哲學(xué)
VS Code 學(xué)習(xí)記:如何快速上手
VS Code 學(xué)習(xí)記:如何雙手不離開鍵盤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沛简,隨后出現(xiàn)的幾起案子齐鲤,更是在濱河造成了極大的恐慌斥废,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件给郊,死亡現(xiàn)場離奇詭異牡肉,居然都是意外死亡,警方通過查閱死者的電腦和手機淆九,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門统锤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炭庙,你說我怎么就攤上這事饲窿。” “怎么了煤搜?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵免绿,是天一觀的道長。 經(jīng)常有香客問我擦盾,道長嘲驾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任迹卢,我火速辦了婚禮辽故,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腐碱。我一直安慰自己剥哑,他們只是感情好歼争,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布咽斧。 她就那樣靜靜地躺著捺弦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谋作。 梳的紋絲不亂的頭發(fā)上芋肠,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音遵蚜,去河邊找鬼帖池。 笑死,一個胖子當(dāng)著我的面吹牛吭净,可吹牛的內(nèi)容都是我干的睡汹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼寂殉,長吁一口氣:“原來是場噩夢啊……” “哼囚巴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤文兢,失蹤者是張志新(化名)和其女友劉穎晤斩,沒想到半個月后焕檬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姆坚,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年实愚,在試婚紗的時候發(fā)現(xiàn)自己被綠了兼呵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡腊敲,死狀恐怖击喂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碰辅,我是刑警寧澤懂昂,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站没宾,受9級特大地震影響凌彬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜循衰,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一铲敛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧会钝,春花似錦伐蒋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奸鬓,卻和暖如春焙畔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背全蝶。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工闹蒜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抑淫。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓绷落,卻偏偏與公主長得像,于是被迫代替她去往敵國和親始苇。 傳聞我的和親對象是個殘疾皇子砌烁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容