WSL 2 與 Visual Studio Code
2019 年 9 月 3 日,作者:Matt Hernandez,@fiveisprime
距離 適用於 Linux 的 Windows 子系統 2 (WSL 2) 的首次 Beta 版本釋出已經有幾個月了,我想分享一下關於它的一切,以及它將如何幫助你提高工作效率。自從它在 Windows Insider 中推出以來,我一直在使用這個 Beta 版本,並且我很快就完全轉向在日常開發任務中使用 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 倍——以及完整的系統呼叫功能。你的模組安裝會更快,你的儲存庫克隆會更快,你喜歡的庫也會可靠地工作。效能的提升意味著你還可以執行 Zsh 等替代 shell,甚至可以使用你喜歡的 Node.js 版本管理工具。
WSL 2 和 Visual Studio Code
如果你正在跟進,請確保你已選擇加入 Windows Insider 版本並啟用了 WSL 2。你可以在 WSL 2 安裝說明 中瞭解有關如何入門的更多資訊。
你還需要安裝 Visual Studio Code 和 WSL 擴充套件。此外,還可以看看 Beta 版 Windows Terminal,以獲得 Windows 上最佳的終端體驗。

開啟 WSL,可以透過啟動 Windows Terminal 並建立一個新的 WSL 標籤頁,或者透過啟動你安裝的 Linux 發行版。你也可以透過在終端中輸入 wsl,直接從命令提示符或 PowerShell 切換到 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 連線性非常好,但與 VM 相比效能相當差。
- WSL 2 帶來了一種混合方法,具有輕量級 VM、完全連線的體驗和高效能。
在 Visual Studio Code 中加入 WSL 擴充套件,你將擁有兩全其美的優勢——適用於你的工具的 Linux 和 Windows 相容性,以及出色的效能和無縫的開發體驗。
進一步閱讀
為了幫助你使用 WSL 設定 VS Code,這裡有一個 在 WSL 中工作教程。如果你想了解有關 VS Code Remote 的更多資訊,以及它如何透過 SSH 和 Docker 容器內部工作,請參閱完整的 VS Code 遠端開發文件。
遠端編碼愉快!
Matt Hernandez,VS Code 專案經理 @fiveisprime