已經(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.windows
為radian.ext
路徑 - 找到
r.rterm.option
選項,并在配置文件(json 格式)中注銷掉這個選項下的--no-save
和no-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í)記:如何雙手不離開鍵盤