現已推出!閱讀關於 11 月的新功能與修正。

2023 年 6 月 (1.80 版本)

更新 1.80.1:此更新解決了這些 問題

更新 1.80.2:此更新解決了這個安全性問題

下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2023 年 6 月的版本。此版本有許多更新,我們希望您會喜歡,其中一些主要重點包括

如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的「更新」。

測試人員:想盡快試用新功能嗎?您可以下載每日測試人員組建,並在最新更新可用時立即試用。

協助工具

協助工具檢視

新的命令 開啟協助工具檢視 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 允許螢幕閱讀器使用者逐字元、逐行檢查內容。當焦點放在浮動視窗或聊天面板回應時,請叫用此功能。

協助工具說明改善

新的命令 開啟協助工具說明 (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)) 會根據目前內容開啟說明功能表。目前適用於編輯器、終端機、筆記本、聊天面板和內嵌聊天功能。

停用協助工具說明功能表提示,並從說明功能表內開啟其他文件 (如果有的話)。

筆記本的協助工具說明

為筆記本新增了新的協助工具說明功能表,以提供關於編輯器配置和瀏覽及與筆記本互動的資訊。

聊天音訊提示

現在為 GitHub Copilot 聊天體驗提供音訊提示,並且可以透過 audioCues.chatRequestSentaudioCues.chatResponsePendingaudioCues.chatResponseReceived 啟用。

聊天協助工具改善

聊天回應會在收到時立即提供給螢幕閱讀器,而內嵌和聊天面板協助工具說明功能表包含更多關於預期內容以及如何與每個功能互動的詳細資訊。

設定編輯器替代文字改善

使用螢幕閱讀器瀏覽時,設定編輯器 (可透過 喜好設定:開啟設定 (UI) 命令存取) 現在較不冗長。特別是,設定範圍切換器會公告範圍的實際名稱,而不是檔案路徑,而且設定描述替代文字已清除,不包含原始 Markdown 格式。

Navigating through the Settings editor with NVDA on Windows

工作台

預覽影片的自動播放和循環播放

您現在可以為內建影片檔案預覽啟用影片自動播放和循環播放。相關設定如下:

  • mediaPreview.video.autoPlay — 啟用影片自動播放。自動播放的影片會自動靜音。
  • mediaPreview.video.loop — 啟用影片循環播放。

這些設定預設為關閉。

當編輯器為唯讀時的更多說明

隨著上次里程碑在 VS Code 中引入唯讀模式,編輯器可能會因為工作區設定而變成唯讀。

在這個里程碑中,當您嘗試在唯讀編輯器中輸入時,我們增強了編輯器中的通知訊息,並且在某些情況下提供變更 files.readonly 設定的連結。

預設檔案對話方塊位置

新的設定 files.dialog.defaultPath 可以設定檔案對話方塊 (例如,開啟或儲存檔案或資料夾時) 開啟時應顯示的預設位置。僅在沒有其他已知位置時 (例如在空的 VS Code 視窗中) 才會使用此預設值。

在索引標籤上按兩下時停用最大化編輯器群組

新的設定 workbench.editor.doubleClickTabToToggleEditorGroupSizes 會停用在按兩下該群組的索引標籤時,將編輯器群組的大小從最大化切換為還原。

控制固定寬度索引標籤的最小寬度

新的設定 workbench.editor.tabSizingFixedMinWidth 可控制當 workbench.editor.tabSizing 設定為 fixed 時,索引標籤的最小大小。固定索引標籤寬度會在 1.79 版本資訊中更詳細地說明。

編輯器群組分割大小變更為「自動」

workbench.editor.splitSizing 設定的新值稱為 auto,這是新的預設值。在此模式中,分割編輯器群組只會在沒有任何編輯器群組調整大小的情況下,將可用大小平均分配給所有編輯器群組。否則,分割編輯器群組的空間會分成兩半,並放置在新的編輯器群組中。

此變更的目的是在您分割時不會破壞您建立的版面配置,但仍然保留先前平均分配大小的預設行為。

搜尋 .gitignore 排除行為

search.useIgnoreFiles 設定為 true 時,無論工作區是否初始化為 Git 存放庫,都會遵循工作區的 .gitignore

註解的最大高度

設定 comments.maxHeight 可讓您停用註解的最大高度限制,例如使用 GitHub Pull Requests and Issues 擴充功能時,為提取要求顯示的註解。

疑難排解 VS Code 中的問題

命令調色盤中新增了 說明:疑難排解問題 命令,以協助您在 VS Code 中疑難排解問題。啟動的工作流程可協助您使用特殊的疑難排解設定檔和 VS Code 的 擴充功能對分功能來識別問題的原因。擴充功能對分將會以二元搜尋的方式啟用和停用您安裝的擴充功能,同時您會指出問題是否重現。這會縮小造成問題的擴充功能範圍,並協助您在報告問題時提供正確的資訊。

停用 Chromium 沙箱

如果您有必須以提升的使用者身分啟動 VS Code 桌面的情況,例如,您在 Linux 上以 sudo 啟動 VS Code,或在 Windows 的 AppLocker 環境中以管理員身分啟動 VS Code,則您必須使用 --no-sandbox --disable-gpu-sandbox 命令列選項啟動 VS Code,才能讓應用程式正常運作。

根據 問題 #184687 中的意見反應,現在有兩個新設定可在您需要停用 Chromium 沙箱時更輕鬆地進行

  1. 新的命令列選項 --disable-chromium-sandbox 可停用應用程式中所有處理序的 Chromium 沙箱。這個新選項可以用來取代 --no-sandbox --disable-gpu-sandbox。這個選項適用於執行階段在未來版本中可能會新增的任何新處理序沙箱。

  2. 若要持續跨啟動停用 Chromium 沙箱,請執行下列動作

    • 開啟命令調色盤 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。
    • 執行 喜好設定:設定執行階段引數 命令。
    • 此命令會開啟 argv.json 檔案以設定執行階段引數。您可能會看到一些已在其中的預設引數。
    • 新增 "disable-chromium-sandbox": true
    • 重新啟動 VS Code。

注意:除非您看到問題,否則請勿使用此設定!

編輯器

在縮小和展開選取範圍時略過子字詞

現在可以設定 展開縮小選取範圍 命令以略過子字詞。這是透過 editor.smartSelect.selectSubwords 設定完成的。依預設,會選取子字詞,但現在可以停用。

  • true -> Co|deEditor 會選取 [Code]Editor,然後是 [CodeEditor]
  • false -> Co|deEditor 會選取 [CodeEditor]

當您頻繁使用多個游標和在異質文字上擴展和縮小選取範圍時,此設定會很方便。

改進了 JSX/TSX 中 CSS 模組的 Emmet 支援

Emmet 支援一組新的 JSX/TSX 檔案縮寫。在 JSX 或 TSX 檔案中輸入 ..test 並展開縮寫時,會新增程式碼行 <div styleName={styles.test}></div>

屬性名稱和值前綴可以使用 emmet.syntaxProfiles 設定進行配置。將 emmet.syntaxProfiles 設定配置如下:

"emmet.syntaxProfiles": {
    "jsx": {
        "markup.attributes": {
            "class*": "className",
        },
        "markup.valuePrefix": {
            "class*": "myStyles"
        }
    }
}

然後在 JSX 或 TSX 檔案中展開縮寫 ..test,您會得到縮寫 <div className={myStyles.test}></div>

可調整大小的內容懸停

現在可以調整內容懸停控制項的大小。您可以將滑鼠游標懸停在控制項邊框上,並拖曳分隔線來變更懸停的大小。

終端機

圖片支援

終端機中的圖片,在上一個版本中已預覽,現在預設為啟用。終端機中的圖片通常是將圖片像素資料編碼為文字,然後透過特殊的跳脫序列寫入終端機。目前支援的協定是 sixeliTerm 首創的內嵌圖片協定

若要手動測試圖片,您可以從 libsixel 儲存庫下載並 cat 一個 .six 範例檔案

Running cat with a sixel file will print an image

或將 imgcat python 套件imgcat 指令碼 與 .png、.gif 或 .jpg 檔案搭配使用

Running imgcat with a png file will print the image

可以透過設定停用此功能

"terminal.integrated.enableImages": false

現在支援新的連結格式,包括需要向上掃描才能找到檔案的連結,以及具有範圍(從行到行或字元到字元)的連結。

  • @@ git 範圍連結

    Links from git in the style '@@ - + @@' are now detected

  • OCAML 的 Dune 風格範圍連結

    Links in the style 'File "src/cli.js", lines 15-19' are now detected
    Links in the style 'File "src/cli.js", line 15, characters 8-34' are now detected
    Links in the style 'File "src/cli.js", lines 15-19, characters 8-34' are now detected

  • ESLint 風格多行連結

    Links from ESLint that prefix a result with 'line:col' now are detected

  • Ripgrep 風格多行連結

    Links from ripgrep that prefix a result with 'line:' now are detected

已移除過時的 shell 和 shellArgs 設定

設定 terminal.integrated.shell.*terminal.integrated.shellArgs.* 在一年前已被 終端機設定檔 取代,現在已被移除。如果您仍然使用舊的 shellshellArgs 設定,以下是一個前後範例,可協助您進行遷移

// Before
{
  "terminal.integrated.shell.windows": "pwsh.exe",
  "terminal.integrated.shellArgs.windows": ["-Login"],

  "terminal.integrated.shell.osx": "bash",
  "terminal.integrated.shellArgs.osx": ["-l"],
}

// After
{
  "terminal.integrated.profiles.windows": {
    "PowerShell Login": {
      // Source is a special property that will use VS Code's logic to detect
      // the PowerShell or Git Bash executable.
      "source": "PowerShell",
      "args": ["-Login"],
      "icon": "terminal-powershell"
    },
  },

  "terminal.integrated.profiles.osx": {
    // This will override the builtin bash profile
    "bash": {
      "path": "bash",
      "args": ["-l"],
      "icon": "terminal-bash"
    }
  }
}

測試

終端機輸出支援

先前,測試結果檢視中顯示的測試輸出將永遠顯示在內嵌的文字編輯器中。這會剝奪它在終端機中執行時可能具有的豐富樣式,例如色彩、樣式和符號。在此版本中,我們會在真正的 xterm.js 終端機中顯示輸出。

Results shown in the Tests Results panel with green checkmarks

佈景主題:Codesong(在 vscode.dev 上預覽)

既然 測試結果檢視已完整支援,則 顯示測試輸出 的命令已重新導向以開啟測試結果檢視,而不是建立臨時終端機。

原始碼控制

關閉儲存庫的改進

過去,使用者可以使用 Git:關閉儲存庫 命令或在原始檔控制檢視中使用 關閉儲存庫 動作來關閉儲存庫,但是某些動作(例如,從已關閉的儲存庫開啟檔案)會重新開啟已關閉的儲存庫。在此里程碑中,我們進行了一些改進,因此每個工作區現在都會持續保留儲存庫已關閉的事實。使用者可以使用 Git:重新開啟已關閉的儲存庫... 命令來重新開啟已關閉的儲存庫。

筆記本

改進了遠端開發的儲存效能

先前,在 VS Code 的遠端擴充功能中儲存筆記本需要將整個筆記本傳送到擴充功能主機,對於大型筆記本或啟用自動儲存的慢速網路連線而言,這可能會很慢。我們僅將對筆記本的變更傳送到擴充功能主機,從而提高了效能,進而加快了筆記本的儲存和執行速度。雖然此功能預設仍處於停用狀態,但我們相信很快就能夠啟用它。若要試用,請將 "notebook.experimental.remoteSave": true 新增至您的設定中。如需更多詳細資料,您可以追蹤 issue #172345

筆記本全域工具列重新製作

筆記本編輯器的全域工具列已重寫以採用工作台工具列,讓使用者能夠對工具列動作進行更佳的自訂。使用者現在可以按一下滑鼠右鍵並從工具列中隱藏動作。按一下工具列中的動作滑鼠右鍵會顯示隱藏該動作的選項,以及重設選單並帶回隱藏的動作。

工具列繼續與所有三種標籤策略搭配使用:alwaysneverdynamic。您可以透過設定 notebook.globalToolbarShowLabel 變更標籤策略。

佈景主題:Monokai Pro (Filter Ristretto)(在 vscode.dev 上預覽)

互動式視窗備份和還原

Python 互動式視窗現在已完全與 熱退出 功能整合,並在 VS Code 重新載入之間還原編輯器狀態。interactiveWindow.restore 設定不再有任何作用且已移除。

如果停用了熱退出,則在關閉 VS Code 時會出現提示,讓您可以選擇將編輯器狀態儲存為 .ipynb 檔案。

佈景主題:Bearded Theme feat. Gold D Raynh(在 vscode.dev 上預覽)

語言

Markdown 從預覽複製圖片

Markdown 預覽中圖片的新內容選單可讓您從預覽中複製圖片,並將其貼到 Markdown 編輯器中。複製圖片時,預覽編輯器必須具有焦點。

新的 markdown.editor.pasteUrlAsFormattedLink.enabled 設定(預設為 false)可讓您將連結插入到自動格式化為 Markdown 連結的 Markdown 編輯器中。如果您選取一些要以貼上的連結取代的文字,則選取的文字將自動成為連結的標題。如果未選取任何文字,則會顯示預設連結標題。此功能適用於外部瀏覽器連結以及工作區內的檔案。

您必須啟用設定 editor.pasteAs.enabled,此新設定才能運作。

遠端開發

遠端開發擴充功能,可讓您使用 開發容器、透過 SSH 的遠端機器或 遠端通道,或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。

您可以在 遠端開發版本資訊 中瞭解新的擴充功能和錯誤修正。

遠端選單

在此里程碑中,我們更新了遠端選單,其中包含一些項目,可協助您快速安裝並開始使用遠端連線(SSH、遠端通道GitHub Codespaces 等),方法是安裝必要的擴充功能。歡迎頁面上也有一個 連線到... 開始項目,可協助您開始從 VS Code 桌面使用遠端連線。

我們也使用連結到遠端通道的開始項目更新了 vscode.dev 上的歡迎頁面。

透過通道的 WSL

在上次反覆運算中,我們預覽了透過 遠端通道 連線到 WSL。此功能在此次反覆運算中現在已穩定。如果您在安裝 WSL 的 Windows 機器上執行遠端通道,您可以選擇直接從遠端總管連線到 WSL。

Remote Tunnels view with a Connect to WSL option

佈景主題:Codesong(在 vscode.dev 上預覽)

此功能現在適用於 VS Code 桌面以及 vscode.dev。如果您已在 Windows 裝置上執行通道,請務必將 VS Code 更新至最新版本以啟用此功能。

對擴充功能的貢獻

GitHub Copilot

我們在 Chat 檢視中引入了僅限預覽的斜線命令,以協助您建立專案和筆記本,並在工作區中搜尋文字。

注意:若要存取 Chat 檢視、內嵌聊天和斜線命令(例如 /search/createWorkspace),您需要安裝 GitHub Copilot Chat 擴充功能。

建立工作區

您可以使用 /createWorkspace 斜線命令,要求 Copilot 為熱門專案類型建立工作區。Copilot 會先為您的請求產生目錄結構。

然後您可以使用 建立工作區 按鈕來建立專案目錄並將其開啟為新的工作區。

Create and open workspace using GitHub Copilot

建立筆記本

您可以使用 /createNotebook 斜線命令,要求 Copilot 根據您的需求建立 Jupyter 筆記本。Copilot 會根據您的需求產生筆記本的概要。

然後您可以使用 建立筆記本 命令來建立筆記本,並根據建議的概要填入程式碼儲存格。

產生搜尋參數

您可以要求 Copilot 自動填入工作區搜尋中的搜尋參數。若要執行此操作,請使用 /search 命令,後面接著您想要在文字中尋找的內容描述。

這些預覽斜線命令可以透過將 github.copilot.advanced 設定配置如下來啟用

"github.copilot.advanced": {
   "slashCommands": {
      "createWorkspace": true,
      "createNotebook": true,
      "search": true
   }
}

Copilot YouTube 播放清單

在 YouTube 上的 VS Code Copilot 系列中,有一個涵蓋 適用於 PowerShell 的 Copilot 的新單元。如果您錯過了這個系列,您也會找到其他關於使用 Copilot 進行開發時的 特定語言 講座和 有效提示 指導。

Python

Mypy 擴充功能

現在有一個 Mypy 類型檢查器 擴充功能,它使用 mypy 提供 Python 的類型檢查支援,以預先發行版本形式提供預覽。這個新的擴充功能會在您的整個程式碼庫上提供錯誤和警告,而不僅限於目前的檔案。它也使用 dmypy 來加快類型檢查速度。

如果您對這個新的擴充功能有任何問題或想要提供意見反應,您可以在 Mypy 擴充功能 GitHub 儲存庫中提交問題。

Debugpy 擴充功能

當從 Python 擴充功能中移除對 Python 2.7 和 Python 3.6 的支援時,我們收到許多無法將程式碼庫升級至最新版本的 Python 的使用者意見反應,並且無法使用最新版本的 Python 擴充功能來偵錯其應用程式。為了尋求解決方案,我們建立了一個名為 Debugpy 的獨立 Python 偵錯工具擴充功能。藉由使偵錯工具與 Python 擴充功能分開,您最終將能夠使用最新版本的 Python 擴充功能,同時使用舊版本的偵錯工具(方法是停用 擴充功能自動更新)。此擴充功能以預先發行版本形式提供預覽,使用最新版本的 debugpy。我們計劃在不久的將來支援舊版本的 debugpy。

試試看,如果一切運作正常,請告訴我們。我們的計畫是廢除內建的偵錯功能,改用這個獨立的擴充功能。

Pylance 本地化

Pylance 擴充功能現在已本地化!這表示如果您的 VS Code 中安裝並啟用了語言套件,則擴充功能的設定、命令和其他文字將會翻譯成您偏好的語言。

測試探索和執行重寫

本月我們將繼續推出測試重寫作為實驗。提醒一下,此重寫重新設計了擴充功能中 unittestpytest 的測試探索和執行背後的架構。此重寫目前對 100% 的 VS Code Insiders 使用者啟用,並將於本月開始逐步推廣到穩定版。此重寫將很快被採用,但目前,選擇加入和退出設定 `pythonTestAdapter` 仍然存在。

pytest 和 unittest 的動態執行結果

隨著新實驗的推出,pytest 和 unittest 的動態執行結果也一併推出。先前,我們的測試結果僅在所有測試完成執行後才會傳回,但現在有了這項功能,測試結果會個別傳遞,讓您可以即時看到測試通過和失敗。

第三方程式庫的索引持久性

Pylance 會對您環境中安裝的第三方程式庫執行索引,以啟用 IntelliSense 功能,例如自動完成、自動匯入、程式碼導覽等。先前,Pylance 每次在 VS Code 中開啟工作區時都會對這些程式庫進行索引。現在,Pylance 會保留這些程式庫的索引,減少重複索引流程的需求。

Python 3.7 支援的棄用

Python 3.7 已於 2023-06-27 達到生命週期結束 (EOL)。因此,Python 擴充功能將在三個月後,於該擴充功能的 2023.18 版本(與 VS Code 的 2023 年 9 月版本對應)停止對 Python 3.7 的官方支援。目前沒有積極移除對 Python 3.7 支援的計畫,因此我們預期 Python 擴充功能在可預見的未來將繼續非官方地與 Python 3.7 搭配使用。

由於現在所有其他 Python 版本都採用年度發布節奏,我們預期一旦 Python 版本在下一個曆年的第一個 Python 擴充功能版本中達到 EOL,就會停止對其的官方支援。例如,Python 3.8 預計在 2024 年 10 月達到 EOL,因此 2025 年的第一個 Python 擴充功能版本將停止官方支援。

GitHub Pull Requests 和 Issues

GitHub Pull Requests and Issues 擴充功能有了更多進展,此擴充功能可讓您處理、建立和管理提取請求和問題。

  • 最多可以在提取請求中載入 1000 個(先前為 100 個)註解執行緒。
  • 新的 VS Code API 提案(用於唯讀訊息)可讓您直接從未簽出的差異中簽出 PR。
  • 樹狀結構和註解中的頭像現在是圓形,而非方形。

請檢閱該擴充功能 0.68.0 版本的變更記錄,以瞭解其他重點。

預覽功能

TypeScript 5.2 支援

此更新包含對即將推出的 TypeScript 5.2 版本的支援。請查看 TypeScript 5.2 迭代計畫,以瞭解更多有關 TypeScript 團隊目前正在處理的詳細資訊。即將推出的工具重點包括:

  • 新的「**內嵌常數**」重構。
  • 新的「**移至檔案**」重構,可讓您將符號移動到現有檔案。

若要開始使用 TypeScript 5.2 夜間建置,請安裝 TypeScript Nightly 擴充功能。

新的差異編輯器

在此迭代中,我們完成了差異編輯器的重寫。此重寫讓我們得以新增一些新功能、改善效能,並修正數個錯誤。

若要試用新的差異編輯器,請將 "diffEditor.experimental.useVersion2": true 新增至您的設定中。新的差異編輯器仍處於實驗階段,但最終將在未來的更新中取代目前的差異編輯器。

所有呈現的功能都需要新的差異編輯器。

折疊未變更的區域

使用 diffEditor.experimental.collapseUnchangedRegions 以啟用在新的差異編輯器中隱藏未變更的區域。當檢閱包含大量未變更程式碼的大型差異時,此功能很有用。

隱藏程式碼區塊的邊界可以拖曳或按一下,以顯示底部或頂部的程式碼。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

顯示插入/刪除標記

插入/刪除標記會指出在某行中插入或刪除文字的位置,當一行同時包含插入和刪除時,這特別有幫助。

使用 diffEditor.experimental.showEmptyDecorations 以啟用/停用插入和刪除標記。

Deletion markers

改良的裝飾

整行刪除/插入現在會有全寬背景色彩。這可大幅減少雜訊。

這是一個範例,說明新的差異編輯器如何醒目提示變更

New Diff Editor highlighted changes

這是舊的差異編輯器轉譯裝飾的方式(請注意右邊的第 57 行沒有全寬背景色彩)

Current Diff Editor highlighted changes

同步差異更新

在新的差異編輯器中輸入時,變更會立即以啟發式方式套用,並在延遲一段時間後觸發非同步差異計算。在舊的差異編輯器中,變更不會立即套用,導致輸入時出現可見的閃爍。

新的 - 輸入時差異會立即更新

Diffs update immediately when typing

舊的 - 有一些可見的閃爍

Diffs did only update after a delay in the old diff editor

移動偵測

此實驗功能會偵測檔案中移動的程式碼區塊。使用 diffEditor.experimental.showMoves 以開啟此功能。目前,僅偵測到簡單的移動,但我們計畫在未來改進此功能。選取移動的程式碼區塊後,來源和目標位置會對齊,並顯示它們之間的差異。

Move detection displays line connecting moved code block

由於移動偵測仍處於實驗階段,預期未來更新會發生重大變更。

擴充功能撰寫

SecretStorage API 現在使用 Electron API 而非 keytar

SecretStorage API 多年來一直是儲存機密 (例如密碼、存取權杖等) 的建議方法。在幕後,它一直使用 keytar,這是一個抽象層,用於在 OS 金鑰鏈中儲存機密。由於 keytar 已被棄用和封存,我們尋找了此問題的其他解決方案,特別是在我們的執行階段 Electron 中尋找解決方案。

在此版本中,我們已開始從 keytar 遷移到 Electron 的 safeStorage API。此切換對您而言應該是透明的,因為機密會從 keytar 擷取,並透過 Electron 的 safeStorage API 還原。未來,我們將移除此遷移,以便完全移除我們對 keytar 的相依性。

keytar 棄用計畫

一段時間以來,VS Code 一直很大程度地依賴 keytar,這是一個抽象層,用於在 OS 金鑰鏈中儲存機密。此外,我們在 VS Code 中包含了一個 keytar shim,擴充功能在引入 SecretStorage API 之前一直依賴它。keytar 本身已正式封存,且不再維護...為了透過**不**依賴已封存的軟體來儲存機密來推廣良好的安全性實務,我們正在擬定計畫以從 VS Code 中移除此 shim。

我們已直接聯絡仍在使用此 keytar shim 的熱門擴充功能作者,他們正在努力將其移開。我們也想在此處以及在 我們的 GitHub 討論區 中傳達此訊息,以便讓那些我們未直接聯絡的人將此變更造成的干擾降到最低。我們知道這不是最好的消息,因為我們也花費了相當多的精力來移除對 keytar 的相依性,但我們認為這是確保擴充功能使用安全 API 的正確做法。

如果您在擴充功能中直接使用 keytar,則有幾個選項可供您考慮

  • **(建議)** 使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平台的,並適用於 VS Code 支援的所有平台。它也由 VS Code 團隊維護、將繼續維護,而且已成為 VS Code API 的一部分多年。
  • **(不建議)** 您可以將 keytar 模組與您的擴充功能捆綁在一起。請記住,keytar 是一個原生 node 模組,這表示您需要為您想要支援的每個平台發佈平台特定擴充功能

**時間表**:目前的計畫是在 **8 月初**從 VS Code Insiders 中移除此 shim,這表示 **2023 年 9 月**的穩定版將是第一個沒有 shim 的版本。

此工作的追蹤在 issue #115215 中進行,如果您有任何問題,歡迎在此處我們的 GitHub 討論區中提問。

改善本機檔案的 vscode.fs.writeFile 效能

當您使用 vscode.fs.writeFile API 將資料寫入檔案時(您應該這樣做!),寫入本機於擴充功能主機的檔案的操作現在會更快地解析。

先前,擴充功能主機會將寫入操作委派給 VS Code 用戶端執行,但現在操作會直接在擴充功能主機內執行,從而節省往返。

樹狀結構核取方塊 API

TreeItem checkboxState API 已完成。根據預設,具有核取方塊的樹狀結構項目將由 VS Code 管理其已核取狀態。可以將 TreeViewOptions 屬性 manageCheckboxStateManually 設定為 true 來變更此行為。設定 manageCheckboxStateManually 時,擴充功能會負責管理父系和子系核取方塊的核取和取消核取。

EnvironmentVariableCollection.description

此新的 API 可讓您為 EnvironmentVariableCollection 指定描述,在終端機索引標籤懸停中向使用者顯示,以說明變更的具體用途。

// Example of what the Git extension could use
context.environmentVariableCollection.description =
  'An explanation of what the environment changes do';

您可以在內建的 Git 擴充功能中看到此 API 的實際運作,它現在描述了變更的用途

Environment variable collection descriptions are explained in a terminal tab's hover

建議的 API

每個里程碑都隨附新的建議 API,而擴充功能作者可以試用它們。與往常一樣,我們需要您的意見反應。以下是試用建議 API 的步驟:

  1. 尋找您想要試用的提案,並將其名稱新增至 package.json#enabledApiProposals
  2. 使用最新的 @vscode/dts 並執行 npx @vscode/dts dev。它會將對應的 d.ts 檔案下載到您的工作區。
  3. 您現在可以針對提案進行程式設計。

您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而且我們永遠不想破壞現有的擴充功能。

檔案系統提供者的唯讀訊息

當您 registerFileSystemProvider 時,您可以提供唯讀訊息,而不只是將檔案系統標記為唯讀。當使用者嘗試編輯來自該提供者的檔案時,會在編輯器中顯示以下訊息。

Read-only file system message

工程

匯出符號的名稱修飾

去年我們開始混淆私有屬性和方法名稱,以減少程式碼大小。現在我們也混淆了匯出的符號名稱,這進一步減少了我們主要的 Workbench JavaScript 檔案大小 8%。

我們的名稱混淆建置步驟現在總共為核心 VS Code 和內建擴充功能節省了 3.9 MB 的 JavaScript。這種縮減加快了下載速度、減少了 VS Code 的安裝大小,並在每次啟動 VS Code 時加快程式碼載入速度。

Node.js、內建擴充功能和 Electron 的總和檢查碼完整性檢查

作為我們建置的一部分,我們會使用來自其他位置的二進位資源,例如用於遠端伺服器的 Node.js、來自 Marketplace 的內建擴充功能和 Electron。在這個里程碑中,我們透過對照簽入 vscode GitHub 儲存庫中的 SHA256 總和檢查碼進行驗證,來確保這些二進位資源的完整性。

新的 Linux 效能機器

我們非常重視 VS Code 的效能,特別是開啟文字編輯器並看到閃爍游標所花費的時間。為了監控這段經過的時間,我們會在 Windows 和 macOS 上執行每日效能測試。

在這個里程碑中,我們將 Linux 機器新增至測試集,回報 Ubuntu 22 上的啟動時間。

Linux performance machine

事件發射器最佳化

VS Code 在整個程式碼庫中廣泛使用事件發射器。我們在這個迭代中最佳化了這些發射器,這稍微改善了啟動時間和記憶體使用量。

您可以在issue #185789中閱讀更多關於此改進的資訊。

終端機 pty 主機的改進

「Pty 主機」處理序管理終端機啟動的所有 Shell 處理序,並進行了多項改進

  • 效能
    • 現在有直接連線到 pty 主機處理序的通訊管道。其中最顯著的改變是減少了終端機的輸入延遲。
    • 透過減少不必要的呼叫,以及在還原多個終端機時平行化任務,改善了重新連線(重新載入視窗)和處理序恢復(重新啟動)的效能。
    • 我們現在會收集終端機啟動和重新連線的效能指標,您可以透過 開發人員:啟動效能 命令來檢視。
  • 診斷
    • 所有與終端機相關的記錄都已從 視窗 輸出通道移至新的 終端機 輸出通道。
    • 當追蹤記錄層級開啟時,在 Pty 主機 輸出通道中,終端機會記錄所有 RPC 呼叫,這將有助於診斷終端機問題。

文件

新的 C# 主題

您可以透過一組新的C# 文章,使用 C# 開發套件 擴充功能來學習在 VS Code 中進行 C# 開發。在那裡,您會找到說明如何開始使用、描述擴充功能的語言功能(程式碼導覽重構偵錯)以及協助開發生命週期(例如專案套件管理)的主題。

Glob 模式參考

VS Code 有自己的 glob 模式實作,它用於「搜尋檔案」和「資料夾篩選」等功能,讓您可以自訂檔案總管檢視等等。若要了解詳細資訊,您可以檢閱新的Glob 模式參考

值得注意的修正

  • 最大化整合式終端機時文字會遺失 #134448
  • 支援 Fish Shell 整合自動注入 #139400

感謝

最後但同樣重要的是,非常感謝 VS Code 的貢獻者。

問題追蹤

對我們的問題追蹤的貢獻

提取要求

vscode 的貢獻

vscode-emmet-helper 的貢獻

vscode-livepreview 的貢獻

vscode-pull-request-github 的貢獻