將 WSL 2 與 Visual Studio Code 結合使用
2019 年 9 月 3 日,作者:Matt Hernandez, @fiveisprime
適用於 Linux 的 Windows 子系統 2 (WSL 2) 的首個 Beta 版釋出已有幾個月了,我想和大家分享一下它究竟是什麼,以及它將如何幫助你提高生產力。自從它登陸 Windows 預覽體驗計劃以來,我一直在使用這個 Beta 版,並且很快就完全切換到 WSL 2 來處理我的日常開發任務。
WSL 2 有哪些變化
第一個版本在 Windows 上原生實現了系統呼叫。系統呼叫本質上是核心提供的函式,這意味著只有那些已實現的呼叫才能在 WSL 環境中得到支援。如果你用過早期版本的 WSL,並且發現一些庫和工具試圖訪問尚未實現的系統呼叫(例如 Go 偵錯程式),你可能已經注意到了這一點。雖然透過增量改進增加了對更多功能的支援,但 WSL 2 採用了一種完全不同的方法,即提供一個帶有完整 Linux 核心的輕量級虛擬機器。
沒錯,WSL 2 現在附帶了一個虛擬機器,但這並不是你可能期望從虛擬機器中獲得的體驗。傳統虛擬機器可能啟動緩慢且感覺孤立,而 WSL 2 則與之前的版本一樣無縫。可以期待 Windows 和 Linux 之間的高度整合、極快的啟動時間、很小的資源佔用,並且完全無需進行虛擬機器配置或管理。
所有這些都轉化為更高的 IO 效能——與 WSL 1 相比快了高達 20 倍——以及完整的系統呼叫能力。你的模組安裝會更快,倉庫克隆會更快,你喜歡的庫也能可靠地工作。效能的提升意味著你還可以執行 Zsh 等替代 shell,甚至使用你最喜歡的 Node.js 版本管理工具。
WSL 2 和 Visual Studio Code
如果你正在跟著操作,請確保你已經加入了 Windows 預覽體驗計劃的 Insider 版本並啟用了 WSL 2。你可以在 WSL 2 安裝說明中瞭解如何開始。
你還需要安裝 Visual Studio Code 和 WSL 擴充套件。此外,可以看看 Windows Terminal Beta 版,以獲得在 Windows 上最好的終端體驗。
可以透過啟動 Windows Terminal 並建立一個新的 WSL 選項卡,或者啟動你已安裝的 Linux 發行版來開啟 WSL。你也可以直接在命令提示符或 PowerShell 中透過輸入 `wsl` 來切換到 Linux——這只是 WSL 深度整合到 Windows 的眾多方式之一。你甚至可以內聯使用 WSL 來做一些不可思議的事情,比如……
在你的 WSL 終端中,使用 `code .` 啟動 Visual Studio Code。你甚至可以使用 `wsl code .` 來內聯切換到 Linux,啟動 VS Code,然後返回到你的 Windows shell。😏
就我個人而言,我在 Windows 上的開發 100% 都使用 WSL 2——所有的開發工具,如 Git 和 Node.js,都安裝在我的 Linux 環境中。可以檢視這篇“提示與技巧”文章,瞭解更多關於在 WSL 中自定義 VS Code 以滿足你需求的內容。
下面是我的設定介面。
請注意截圖中,我已連線到我的 WSL 2 例項(左下角顯示遠端源為 'Ubuntu-18.04'),並且我從偵錯程式啟動了一個 Node.js 應用,它正處於一個斷點處。在除錯控制檯中,我輸入了 `process.platform` 來展示 WSL 擴充套件如何將所有編輯器互動預設到 Linux 環境。要實現這一點完全不需要任何配置,只需從 WSL 擴充套件連線到你的 WSL 環境即可開始工作。另外請注意,我的換行符預設為了 LF(顯示在狀態列中),而無需設定任何額外的 Git 配置選項——如果你在 Windows 上參與開源專案,你會明白這有多重要。
所有我喜歡的擴充套件都能正常工作,並且都指向了正確的環境。例如,原始碼管理檢視正在使用安裝在 WSL 2 中的 Git 版本顯示我的專案變更,而 Docker 擴充套件已配置為訪問 Docker Desktop WSL 2 技術預覽版。
所有這一切都是透過使用 WSL 擴充套件實現的。編輯、除錯,甚至擴充套件,所有功能都如你所期望的那樣在你最喜歡的編輯器中工作。
WSL 2 的優勢
總結一下
- 虛擬機器資源消耗大,並且會產生一種非常脫節的體驗。
- 最初的 WSL 連線性很好,但與虛擬機器相比效能相當差。
- WSL 2 帶來了一種混合方法,它擁有輕量級的虛擬機器、完全連線的體驗和高效能。
再加上 Visual Studio Code 中的 WSL 擴充套件,你就擁有了所有領域的最佳體驗——為你的工具提供 Linux 和 Windows 相容性,同時具備出色的效能和無縫的開發體驗。
進一步閱讀
為了幫助你設定 VS Code 與 WSL,這裡有一篇在 WSL 中工作的教程。如果你想了解更多關於 VS Code Remote 的資訊,以及它如何透過 SSH 和在 Docker 容器內工作,請參閱完整的 VS Code 遠端開發文件。
遠端編碼愉快!
Matt Hernandez, VS Code 專案經理 @fiveisprime