搭配 VS Code Remote 遠程開發擴展在 WSL 下開發

? 注意:遠程開發擴展需要在 Visual Studio Code Insiders 上使用。

Visual Studio Code Remote - WSL 擴展允許你直接藉助 VS Code 令 「適用於 Linux 的 Windows 子系統」(WSL) 作為你的全職開發環境。你可以在基於 Linux 的環境中進行開發,使用 Linux 特有的的工具鏈和實用庫,並在舒適的 Windows 中運行和調試基於 Linux 的應用程序。

該擴展直接在 WSL 中運行命令和其它擴展,因此你可以編輯位於 WSL 中的文件或掛載在其上的 Windows 文件系統(例如 /mnt/c),而無需擔心遇到文件路徑問題、二進位兼容性或其它跨操作系統的難題。

WSL Architecture

這使得 VS Code 能夠提供有著在本地進行開發一樣效率的開發體驗——包括完整的IntelliSense(代碼補全)、代碼導航和調試——無論你的代碼在何處託管,都是如此。

上手

安裝

上手前你需要做的幾件事情:

  1. 安裝對應你偏好的 Linux 發行版的 「適用於 Linux 的 Windows 子系統」。VS Code 將使用你安裝的默認發行版,因此可以根據需要使用 wslconfig.exe 更改默認發行版。

注意:WSL 確實存在一些 已知的對於某些類型的開發的限制,這些限制也會影響你的 VS Code 體驗。

  1. 在 Windows 端安裝 Visual Studio Code Insiders(而不是在 WSL 中)。
  2. 安裝 Remote Development 擴展包。
  3. 考慮在 Windows 端禁用 Git 的行尾結束符自動轉換,方法是使用命令提示符運行:git config --global core.autocrlf false 如果該項保持啟用狀態,由於行尾結束符的差異,此設置可能導致你未編輯的文件中出現了修改操作。有關詳細信息,請參閱 提示和技巧。

在 WSL 中打開文件夾

在 VS Code 中打開「適用於 Linux 的 Windows 子系統」中的文件夾與從命令提示符打開 Windows 文件夾非常相似。

  1. 打開 WSL 終端窗口(使用開始菜單項或從命令提示符鍵入 wsl )。
  2. 切換到你要在 VS Code 中打開的文件夾(包括但不限於 Windows 文件系統掛載點,如 /mnt/c
  3. 在終端中輸入 code-insiders .。在第一次執行此操作時,你應該看到 VS code 在獲取運行於 WSL 所需的組件。這應該只需要很短的時間,而且只需要執行一次。
  4. 片刻之後,一個新的 VS Code 窗口將會出現,你將看到一個 VS Code 正在 WSL 中打開文件夾的通知。
WSL Starting notification

VS Code 現在將繼續在 WSL 中配置自身,並在 WSL 中安裝你在本地運行的任何 VS Code 擴展以優化性能。 VS Code 會對你通知它所獲得的進展。

  1. 完成後,你現在可以在左下角看到一個 WSL 小標識,你將能夠像平常一樣使用 VS Code!
WSL Status Bar Item

就是如此啦!你在此窗口中執行的任何 VS code 操作都將在 WSL 環境中執行,從編輯和文件操作到調試、使用終端等等都是如此。

管理擴展

VS Code 在以下兩個位置之一運行擴展:在 UI / 客戶端這邊或在 WSL 中。雖然作用於 VS Code UI 的擴展(如主題和代碼片段)是在本地安裝的,但大多數擴展都將安裝在 WSL 中。

如果從「擴展」視圖安裝擴展,它將自動安裝在正確的位置。一旦安裝後,你可以根據類別分組確定擴展的安裝位置。那將有「本地 - 已安裝」的類別和一個安裝在 WSL 的類別。

Workspace Extension Category

Local Extension Category

注意:如果你是擴展作者並且你的擴展程序無法正常運行或安裝在錯誤的位置,請參閱 支持遠程開發 查看詳情。

實際需要遠程運行的本地擴展在「本地 - 已安裝」類別中顯示為「已禁用」。你可以單擊「安裝」按鈕在遠程主機上安裝擴展。

Disabled Extensions

高級:強制在本地/遠程運行擴展

擴展通常為單獨運行在本地或遠程而設計和測試,而非對於兩者。但是,如果擴展程序支持這項特性,則可以強制它在 settings.json 文件中指定的特定位置運行。

例如,下面的設置將強制 Docker 和 Debugger for Chrome 擴展程序 遠程運行而不是默認在本地運行:

"remote.extensionKind": {
"msjsdiag.debugger-for-chrome": "workspace",
"peterjausovec.vscode-docker": "workspace"
}

「ui」而不是「workspace」將強制擴展在本地 UI /客戶端 端運行。 通常,除非在擴展程序的文檔中另有說明,否則這應僅用於測試,因為它可以中斷擴展。了解詳細信息,請參閱有關 支持遠程開發 的文章。

在 WSL 中打開終端

從 VS Code 在 WSL 中打開終端很簡單。在 WSL 中打開文件夾後,在 VS code (Terminal > New Terminal) 中打開的任何終端窗口將自動在 WSL 中運行,而不是在本地運行。

你還可以使用此同一終端窗口中的 code-insiders 命令行來執行許多操作,例如在 WSL 中打開新文件或文件夾。 鍵入 code-insiders --help 以查看命令行中可用的選項。

Using the code CLI

在 WSL 中調試

在 WSL 中打開文件夾後,可以像在本地運行應用程序一樣使用 VS Code 的調試器。例如,如果在 launch.json 中選擇一個啟動配置並開始調試(F5),應用程序將在遠程主機上啟動並與調試器交互。

.vscode/launch.json 中有關配置 VS Code 調試功能的詳細信息,請參閱 debugging 文檔。

WSL 特定設置

在 WSL 中打開文件夾時,也會引用 VS Code 的本地用戶設置。雖然這可以保持用戶體驗的一致性,但你可能希望更改本地計算機和 WSL 之間一些設置。幸運的是,一旦連接到 WSL,你還可以通過運行「首選項」來設置 WSL 特定設置:打開從命令選項板(F1)中打開「遠程設置命令」或在設置編輯器中選擇「遠程」選項卡。這些將覆蓋你在 WSL 中打開文件夾時所具有的任何本地設置。

已知限制

本節包含 WSL 常見已知問題的列表。目的不是提供完整的問題列表,而是強調 WSL 中常見的一些問題。

在 這裡瀏覽有關 WSL 的活躍問題列表

常見問題

我應該如何更改「遠程 - WSL」使用的發行版呢?

「遠程 - WSL」擴展使用的是你的默認發行版,你可以通過 wslconfig.exe 對其進行更改。

例子如下:

wslconfig /setdefault Ubuntu

通過以下命令得知你一已安裝的發行版:

wslconfig /l

我看到有關缺少庫或依賴項的錯誤

某些擴展依賴於某些 WSL Linux 發行版原生安裝缺失而找不到的庫。你可以使用其包管理器將其他庫添加到Linux發行版中。 對於基於 Ubuntu 和 Debian 的發行版,運行 sudo apt-get install <package> 來安裝所需的庫。檢查擴展的文檔或提及的運行時信息以獲取其它安裝詳細信息。

在WSL中運行時,VS Code Server 的連接要求是什麼?

VS Code Server 需要與 update.code.visualstudio.commarketplace.visualstudio.com的 HTTPS(埠443)連接。伺服器和 VS code 客戶端之間的所有其它通信都是通過經過身份驗證的隨機的本地 TCP 埠完成的。

作為擴展作者,我需要做什麼?

VS Code 擴展 API 抽象出本地/遠程詳細信息,因此大多數擴展都可以在不進行修改的情況下工作。但是,如果擴展可以使用它們所需的任何 node 模塊或運行時,則可能需要進行調整。 我們建議你測試擴展程序,以此來確定是否需要更新。有關詳細信息,請參閱 支持遠程開發。

問題或反饋

  • 參見 提示和技巧 或者 FAQ。
  • 在 Stack Overflow 上搜索。
  • 添加一個 新特性請求 或者 報告一個問題。
  • 為 我們的文檔 做出貢獻或對 VS Code 自身。
  • 查看我們的 CONTRIBUTING 指南了解詳情。

本文由 VS Code Remote 官方文檔 翻譯而成,同時發表在 ethans.me


推薦閱讀:

TAG:VisualStudioCode | WindowsSubsystemforLinux | Linux |