現已釋出!閱讀關於 11 月新增功能和修復的內容。

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 CodeWSL 擴充套件。此外,還可以看看 Beta 版 Windows Terminal,以獲得 Windows 上最佳的終端體驗。

WSL extension

開啟 WSL,可以透過啟動 Windows Terminal 並建立一個新的 WSL 標籤頁,或者透過啟動你安裝的 Linux 發行版。你也可以透過在終端中輸入 wsl,直接從命令提示符或 PowerShell 切換到 Linux——這只是 WSL 如此深度整合到 Windows 中的眾多方式之一。你還可以使用 WSL 內聯來做一些不可思議的事情,比如……

WSL cow say example

在你的終端中,從 WSL 使用 code . 啟動 Visual Studio Code。你甚至可以使用 wsl code . 內聯切換到 Linux,啟動 VS Code,然後返回到你的 Windows shell。😏

就我個人而言,我在 Windows 上 100% 的開發工作都使用 WSL 2——所有開發工具,如 Git 和 Node.js,都安裝在我的 Linux 環境中。檢視這篇 技巧和竅門帖子,瞭解更多關於如何在 WSL 中自定義 VS Code 以滿足你的需求。

這是我的設定概覽。

Matt's WSL 2 setup

請注意螢幕截圖,我已連線到我的 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

© . This site is unofficial and not affiliated with Microsoft.