WSL 2 與 Visual Studio Code
2019 年 9 月 3 日,作者 Matt Hernandez,@fiveisprime
自從 Windows Subsystem for Linux 2 (WSL 2) 的初始 Beta 版發布以來已經過了幾個月,我想分享一些關於這一切的資訊,以及這將如何幫助您提高生產力。自從 Beta 版在 Windows 測試人員計畫中推出以來,我一直在使用它,並且我很快就完全改用 WSL 2 進行日常開發工作。
WSL 2 的變更
第一個版本在本機 Windows 上實作了系統呼叫。系統呼叫本質上是核心提供的函式,這表示只有已實作的呼叫才在 WSL 環境中受到支援。如果您使用過早期版本的 WSL,並且發現嘗試存取尚未實作的系統呼叫的程式庫和工具(例如,Go 偵錯工具),您可能已經注意到這一點。雖然對新增更多函式的支援進行了漸進式改進,但 WSL 2 採取了完全不同的方法,透過搭載輕量型虛擬機器和完整 Linux 核心來解決此問題。
沒錯,WSL 2 現在搭載了 VM,但這不是您可能對 VM 的期望體驗。傳統 VM 可能啟動緩慢且感覺隔離,但 WSL 2 與先前版本一樣無縫。期待 Windows 和 Linux 之間的高度整合、極快的啟動時間、小型的資源占用空間,以及絕對無需 VM 設定或管理。
這一切都轉化為更高的 IO 效能 – 比 WSL 1 快 20 倍 – 以及完整的系統呼叫功能。您的模組將安裝得更快,您的儲存庫將複製得更快,而且您最喜愛的程式庫將可靠地運作。效能的提升也意味著您還可以執行替代 Shell,例如 Zsh,甚至使用您最喜愛的 Node.js 版本管理公用程式。
WSL 2 與 Visual Studio Code
如果您正在跟著操作,請確保您已加入 Windows 測試人員組建並啟用 WSL 2。您可以在 WSL 2 安裝指示中了解更多關於如何開始使用的資訊。
您還需要安裝 Visual Studio Code 和 WSL 擴充功能。或者,查看 Beta 版 Windows 終端機,以獲得 Windows 上最佳的終端機體驗。
開啟 WSL,您可以啟動 Windows 終端機並建立新的 WSL 索引標籤,或啟動您安裝的 Linux 發行版。您也可以直接從命令提示字元或 PowerShell 切換到 Linux,方法是在終端機中輸入 wsl
– 這只是 WSL 如此深入整合到 Windows 的眾多方式之一。您也可以使用 WSL 行內執行一些荒謬的事情,例如…
從您的終端機中,使用 WSL 的 code .
啟動 Visual Studio Code。您甚至可以使用 wsl code .
行內切換到 Linux、啟動 VS Code,然後返回您的 Windows Shell。 😏
就我個人而言,我 100% 使用 WSL 2 在 Windows 上進行開發 – 所有開發工具,例如 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 非常連線,但與 VM 相比,效能相當差。
- WSL 2 帶來了混合方法,具有輕量型 VM、完全連線的體驗和高效能。
在 Visual Studio Code 中加入 WSL 擴充功能,您就能擁有兩全其美的優勢 – Linux 和 Windows 相容性,適用於您的工具,並具有卓越的效能和無縫的開發體驗。
延伸閱讀
為了幫助您設定 VS Code 與 WSL,這裡有一個 在 WSL 中工作教學課程。如果您想了解更多關於 VS Code Remote 以及它如何在 SSH 和 Docker 容器內運作的資訊,請參閱完整的 VS Code 遠端開發文件。
祝您遠端程式碼編寫愉快,
Matt Hernandez,VS Code 專案經理 @fiveisprime