參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

2022 年 10 月 (版本 1.73)

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

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


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

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

輔助功能

新音訊提示

新增了音訊提示,可幫助您完成任務和終端操作。

  • 任務完成 - 任務完成後發出聲音(由 audioCues.taskCompleted 設定控制)。
  • 任務失敗 - 任務失敗時發出聲音(audioCues.taskFailed)。
  • 終端快速修復 - 如果當前行上有快速修復可用(audioCues.terminalQuickFix)。

螢幕閱讀器模式下的自動換行

螢幕閱讀器模式下執行 VS Code 時,自動換行已停用,以防止螢幕閱讀器體驗下降。此問題已修復,可以透過 editor.wordWrap 啟用。

輔助功能設定標籤

現在提供了 accessibility 標籤,以提高輔助功能相關設定的發現性。

首選項:開啟輔助功能設定 命令會開啟設定編輯器,並應用 @tag:accessibility 篩選器。

工作臺

在搜尋檢視的結果樹檢視中右鍵單擊資料夾時,上下文選單中現在有兩個新選項。

  • 選擇將搜尋限制到資料夾會將選定的資料夾路徑新增到要包含的檔案文字框。在此文字框中新增路徑會將搜尋結果限制為符合所列路徑或模式的結果。

    Using Restrict Search to Folder

    主題:GitHub Dark Dimmed(在 vscode.dev 上預覽)

  • 選擇從搜尋中排除資料夾會將選定的資料夾路徑新增到要排除的檔案文字框。在此處新增路徑將排除任何符合所列路徑或模式的搜尋結果。

    Using Exclude Folder from Search

    主題:GitHub Dark Dimmed(在 vscode.dev 上預覽)

命令中心模式快捷方式

命令中心頂部添加了一個新部分,以便於發現如何導航檔案、執行命令等。

此簡短模式列表還提供了鍵盤繫結提示,以便您可以直接跳轉到最常用的模式(例如轉到檔案),而無需透過命令中心。

命令中心使用者介面預設不顯示在標題欄中,但您可以透過視窗:命令中心 (window.commandCenter) 設定或透過右鍵單擊標題欄並勾選命令中心來啟用它。

設定編輯器工作區信任和策略指示器

由於受限模式工作區或由於在組織策略下進行管理而未應用的設定現在使用指示器來顯示其狀態。即使在受限模式工作區中,使用者也可以讀取和寫入工作區設定(這總是可以透過 settings.json 檔案實現),但在計算在受限工作區中使用的設定的最終值時,將不考慮工作區設定值。

預設的淺色主題也進行了一些調整,指示器區域的 codicon 渲染更清晰,焦點邊框更緊湊。

Restricted workspace settings demo showing keyboard navigation and toggling a checkbox even when the setting is restricted

大綱預設摺疊狀態

有一個新設定 outline.collapseItems,它控制大綱檢視中專案的預設摺疊狀態。預設值為 false,這意味著大綱專案預設是展開的。將其設定為 true 將使大綱專案預設摺疊。此設定可以按語言設定,也適用於筆記本。

重新排列“檢視”選單

在 VS Code 選單欄的“檢視”選單中,最後一個組是不斷增長的編輯器操作列表。為了平衡選單的增長和功能,我們將主要與外觀相關的專案移到外觀子選單下。自動換行粘性滾動選項保留在選單底部的原始位置。

Updated View menu with Appearance submenu expanded

主題:GitHub Light Default(在 vscode.dev 上預覽)

輸入 UI 上的圓角

文字輸入、文字區域和下拉選單現在都顯示圓角,以匹配之前版本中應用於按鈕的相同樣式。

Text input with rounded corners in the Search input box

快速選擇列表樣式更新

快速選擇 UI 中使用的列表樣式已略微更新,增加了圓角和左右邊距。

列表檢視的 codicon 更新

平面列表和樹狀列表檢視現在使用更清晰易讀的 codicons 來表示列表型別。

輔助側邊欄前景色

輔助側邊欄通常模仿主側邊欄的主題,但並非所有主題鍵都正確拾取。輔助側邊欄現在正確使用 "sideBar.foreground" 主題鍵。

在下面的示例中,右側帶有資源管理器的主側邊欄和左側帶有大綱檢視的輔助側邊欄都使用相同的粉紅色前景色。

Secondary Side Bar with a pink foreground color matching the Primary Side Bar

主題:GitHub Light Default(在 vscode.dev 上預覽)

不再有“摺疊範圍過多”通知

出於效能原因,我們將編輯器中顯示的摺疊範圍數量限制為 5000。此限制可以透過設定 editor.foldingMaximumRegions 進行配置。當超出此限制時,VS Code 過去會顯示通知。現在,狀態列中的語言狀態懸停會顯示該資訊。

Folding limit warning in the language status

預設摺疊提供程式

通常,當有多個摺疊提供程式對一種語言處於活動狀態時,VS Code 會嘗試合併結果。如果存在衝突範圍,則會丟棄一些範圍。此外,並非所有摺疊提供程式都可以與其他提供程式組合。

新的 editor.defaultFoldingProvider 設定允許您選擇要使用的摺疊提供程式。提供程式的名稱是貢獻它的擴充套件的 ID ({publisher}.{extension})。

以下示例將(假定的)擴充套件 aeschli.better-folding 的摺疊提供程式設定為 JavaScript 的預設值。

    "[javascript]": {
            "editor.defaultFoldingRangeProvider": "aeschli.better-folding"
    }

按輸出通道設定日誌級別

您現在可以使用命令開發者:設定日誌級別...來按日誌輸出通道設定日誌級別。當您只想從特定日誌輸出通道檢視更多日誌時,這很有用。該命令將首先顯示輸出通道列表,選擇一個後,您將收到提示以設定日誌級別。

Developer: Set Log Level command dropdown list of output channels

您也可以從命令列按擴充套件設定日誌級別。當您只想從特定擴充套件檢視更多日誌時,這很有用。例如,以下指令碼允許您啟動 VS Code,並將 Git 擴充套件的日誌輸出通道的預設日誌級別設定為 debug

code --log vscode.git:debug

新的 list.collapseAllToFocus 樹檢視命令

一個新命令 list.collapseAllToFocus 允許您遞迴摺疊當前聚焦的樹項。當您想要摺疊不是根的樹項的所有子項時,這很有用。該命令沒有預設的鍵繫結,但您可以透過鍵盤快捷方式編輯器新增自己的鍵盤快捷方式(⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S))。

合併編輯器

在此里程碑中,我們繼續完善合併編輯器,此更新包含一些錯誤修復和一些新功能。

接受雙方追加衝突

在此版本中,接受傳入接受當前始終都可以選擇。當同時選擇這兩個選項時,合併編輯器會追加相應的更改行。

在下面的短影片中,由於兩條行都被接受,RelativePattern 被匯入了兩次。

A screen recording of how both sides are accepted

當衝突可以在字元級別上無衝突地解決時,將顯示接受組合選項,可用於自動解決衝突。

在下面的影片中,兩個符號都被匯入到同一個 import 語句中

A screen recording of how a combination is accepted

針對基線的差異裝飾

當開啟基線檢視時,將顯示當前聚焦側與基線之間的差異。此差異檢視可用於更好地理解傳入當前中的更改。

A screen recording of how a diff between incoming, current, and base is shown

差異演算法改進

合併編輯器的預設差異演算法已更改。新的差異演算法針對合併場景進行了最佳化。在常見情況下,塊的數量最小化,插入位置最佳化。如果新演算法導致問題,可以使用設定 "mergeEditor.diffAlgorithm": "smart" 切換回之前的演算法(預設現在是 experimental)。

以下螢幕截圖演示了插入的改進。請注意,兩個差異都是正確的,但新行為更清楚地突出顯示了插入的文字。

舊行為

The old behavior highlights across both the new and existing text

新行為

The new behavior highlights just the new text

新的差異演算法目前僅在合併編輯器中預設啟用。如果您希望常規差異編輯器也使用新的差異演算法,您可以設定 "diffEditor.diffAlgorithm": "experimental"

導航衝突

您現在可以單擊衝突計數器跳到下一個未處理的衝突

Clicking the conflict counter jumps to the next conflict

語言

厭倦了在移動或重新命名檔案時意外破壞 Markdown 中的連結或影像?嘗試新的 markdown.updateLinksOnFileMove.enabled 設定!

啟用此新設定後,當在 VS Code 資源管理器中移動或重新命名檔案時,VS Code 將自動更新 Markdown 中的連結和影像。

Markdown file links are updated on file move and rename

您可以使用 markdown.updateLinksOnFileMove.include 控制受影響的檔案型別。預設情況下,它對所有 Markdown 檔案和常見的影像檔案格式啟用。

新的Markdown:插入工作區檔案連結Markdown:從工作區插入影像命令允許您使用檔案選擇器快速插入連結和影像到您的 Markdown 中。

請記住,這些命令只是將連結和影像新增到 Markdown 檔案的一種選擇。您還可以使用Markdown 路徑完成,甚至可以透過從 VS Code 的資源管理器中拖放檔案來插入連結或影像。

我們內建的 Markdown 驗證現在可以提醒您未使用或重複的連結定義。您可以使用 markdown.validate.enabled 啟用此功能。

An warning about a duplicate link definition

如果您想更精細地控制這些錯誤,可以使用這些 markdown.validate 設定來停用這些錯誤 (ignore) 或更改它們的嚴重性 (warning, error)。

  • markdown.validate.duplicateLinkDefinitions.enabled
  • markdown.validate.unusedLinkDefinitions.enabled

還有一個快速修復程式可以刪除重複或未使用的連結定義。

Markdown 中的連結出現高亮顯示,可顯示當前文件中游標下的連結被使用的所有位置。

Highlighting all occurrences of a link

請注意,當游標位於文件中的第一個連結上時,所有指向 First Header 的連結以及標題本身都會在文件和文件右側的側邊欄中突出顯示。

此功能預設關閉。要啟用它,請開啟 markdown.occurrencesHighlight.enabled 設定。

新的 Razor 語法高亮語法

VS Code 擁有一個新的、維護更好的 Razor 語法,用於 Razor 檔案的語法高亮顯示。新語法得到積極維護,並修復了舊語法中存在的問題。

Web 版 VS Code

改進的分支建立和保護工作流

當您在 Web 版 VS Code 上的 GitHub 或 Azure Repos 倉庫中時,提交到受保護分支現在會通知您當前分支受保護,並提示您建立新分支。

此流程還將遵循以下設定:

  • git.branchPrefix 允許您使用配置的字首預填充分支名稱快速輸入。
  • "git.branchProtectionPrompt": "alwaysCommitToNewBranch" 允許您在嘗試提交到受保護分支時跳過提示,並直接轉到建立新分支的快速輸入。

此外,當您建立新分支時,可以透過配置 "remoteHub.switchToCreatedBranch": "always" 來繞過關於是否切換到新建立分支的提示。

所有上述內容也適用於在桌面版 VS Code 上使用 GitHub RepositoriesAzure Repos 擴充套件。

Web 端本地化改進

幾個月前,我們開始為 Web 版 VS Code 進行本地化工作。到目前為止,VS Code 核心以及在其擴充套件清單中靜態宣告字串的擴充套件都能夠本地化。在此迭代中,我們完成了最後一塊拼圖:擴充套件程式碼中的字串。這得益於我們上個月提出的本地化 API 的最終確定。

隨著我們繼續在所有擴充套件中採用這個新的 API,請留意 VS Code 會有更多部分被本地化。如果您是擴充套件作者,可以在 vscode-l10n 倉庫中瞭解有關新 API 的更多資訊。

對擴充套件的貢獻

Python

遷移到 isort 擴充套件

在 2022 年 5 月的 釋出中,我們宣佈了一個新的 isort 擴充套件,它與 Python 擴充套件一起工作以排序匯入。例如,當您開啟一個檔案並且匯入不符合 isort 標準時,它將顯示一個錯誤診斷並提供一個程式碼操作來修復匯入順序。在此版本中,我們透過自動將其與 Python 擴充套件一起安裝,遷移到使用獨立的 isort 擴充套件而不是 Python 擴充套件中內建的 isort 支援。

Pylance 預設關閉自動匯入

自從 Pylance 中首次實現自動匯入以來,我們收到了大量反饋,指出當意外接受建議時,自動將匯入新增到檔案是多麼令人困惑,有時甚至令人惱火。從本版本開始,在使用 Pylance 時,包將不再預設自動匯入。如果您想為您的 Python 專案重新啟用自動匯入,可以透過設定 "python.analysis.autoImportCompletions": true 來實現。

Pylint 和 Flake8 擴充套件推薦

在我們之前的版本中,我們釋出了新的 PylintFlake8 擴充套件,它們透過 語言伺服器協議 (LSP) 與 Python 擴充套件協同工作,提供程式碼檢查功能。在此版本中,如果您仍在使用 Python 擴充套件中內建的 Pylint 和 Flake8 功能,我們將顯示通知,提示您安裝這些新擴充套件。

A notification recommending the Pylint extension with a button to install it

遠端開發

遠端開發擴充套件允許您將容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 用作功能齊全的開發環境。此版本的亮點包括:

  • 開發容器模板 - 基於現有模板快速建立開發容器。
  • 開發容器功能 - 透過包含預打包功能(或建立您自己的!)為開發容器新增功能。
  • 建立沒有起始資料夾的新開發容器。

您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。

GitHub 拉取請求和議題

我們繼續開發 GitHub Pull Requests and Issues 擴充套件,該擴充套件允許您處理、建立和管理拉取請求和問題。檢視該擴充套件 0.54.0 版本的更改日誌,瞭解其他亮點。

預覽功能

TypeScript 4.9

此更新包括對即將釋出的 TypeScript 4.9 版本的支援。有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊,請參閱 TypeScript 4.9 迭代計劃。一些編輯器工具亮點:

要開始使用 TypeScript 4.9 每晚構建版本,請安裝 TypeScript Nightly 擴充套件。

設定配置檔案

我們在過去幾個月一直在努力支援 VS Code 中的設定配置檔案,這是社群最受歡迎的需求之一。此功能透過 workbench.experimental.settingsProfiles.enabled 設定提供預覽。試用一下,並透過在 vscode 儲存庫中建立問題或在 問題 #116740 中評論來向我們提供反饋。

顯示同步的配置檔案資料

您現在可以在同步活動(遠端)檢視中檢視每個配置檔案同步的資料。這有助於瞭解每個配置檔案同步了哪些資料。

Sync Activity (Remote) view showing history of Profiles

注意:此功能目前僅在 VS Code 的 Insiders 版本中可用。

擴充套件創作

為工作區編輯提供元資料

應用工作區編輯的 API 現在允許擴充套件提供元資料,例如將編輯標記為重構。此額外元資料將由編輯器和重構後自動儲存(設定:files.refactoring.autoSave)遵守。

限制 MarkdownString 和 Webview 可以執行的命令

MarkdownString 中的命令連結是建立 VS Code 懸停訊息或智慧感知詳細資訊中自定義互動的有用方式。Webview 也可以使用命令連結直接從 webview 觸發 VS Code 命令。但是,命令連結也可能很危險,因為它們可以用於執行任何命令,包括許多未考慮安全性而設計的命令。因此,命令連結預設停用,必須由擴充套件明確啟用。

雖然這種“全有或全無”的方法可行,但我們也發現它給擴充套件作者帶來了過多的安全負擔。需要使用命令連結的擴充套件必須驗證其渲染的內容中只包含安全命令。這既容易忘記,也容易出錯。

為了改進這一點,我們正在引入新的命令連結啟用 API,允許擴充套件僅啟用受信任的命令子集。

對於 MarkdownStringisTrusted 屬性現在接受一個可以執行的命令允許列表(所有其他命令都將被阻止)

const md = new vscode.MarkdownString(
  `A command link: [Open setting](command:workbench.action.openSettings)`
);

// Set trusted commands instead of enabling all commands
md.isTrusted = { enabledCommands: ['workbench.action.openSettings'] };

對於 Webview,WebviewOptions.enableCommandUris 屬性現在可以是已啟用命令的列表,而不是簡單的 true/false

const options: vscode.WebviewOptions = {
  enableCommandUris: ['workbench.action.openSettings']
};

我們強烈建議所有使用命令連結的擴展采用這種新的、限制性更強的 API 來提高安全性。

Webview 和 Webview 檢視的統一來源

為了縮短Webview的載入時間,我們現在嘗試為給定型別的 Webview 的所有例項維護一個統一的來源。這有兩個主要好處:

  • Webview 可以更好地利用快取。這意味著本地資源應該載入得更快。

  • Webview 可以使用按來源劃分的本地儲存和其他 Web API。

    請記住,Webview 的所有例項現在都將在同一個來源上執行,因此如果它們使用本地儲存等 API,請務必根據資源對任何文件特定資料/狀態進行分割槽。例如,localStorage.setItem('scrollPosition', 100) 會將所有 Webview 例項的 scrollPosition 設定為 100。如果您想為單個資源設定滾動位置,您還需要在鍵中包含資源 ID:localStorage.setItem(myDocUri, JSON.stringify({scrollPosition: 100 }))

    您也絕不應使用 localStorage 或類似 API 儲存關鍵資料,例如文件內容。儘管 VS Code 會盡力維護 webview 的一致來源,但我們無法保證來源不會更改。

    在許多情況下,您應該使用webview 狀態 API,因為這些 API 可以為您解決上述兩個問題。

源是為每個擴充套件和 webview 型別隨機生成的。所有 webview 例項都使用相同的源。

目前,普通WebviewWebview 檢視都嘗試保持一致的來源。我們計劃在下一次迭代中將其應用於自定義編輯器和 Notebook Webview。

除錯介面卡協議

新的“startDebugging”反向請求

今天 VS Code 支援多個併發除錯會話,但 除錯介面卡協議 (DAP) 僅涵蓋單個會話。這意味著以程式設計方式建立新的除錯會話不是 DAP 的一部分,並且只能在 DAP 或除錯介面卡之外完成,通常在包含除錯介面卡的除錯擴充套件中。因此,多會話功能(例如自動除錯子程序)對於非 VS Code DAP 客戶端不容易獲得,因為它們通常只使用除錯介面卡而不使用 VS Code 特定的除錯擴充套件。

為了改善這種情況,我們向 DAP 添加了一個新的反向請求 startDebugging,它允許擴充套件從除錯介面卡內部建立新的除錯會話(與呼叫者型別相同)。客戶端能力 supportsStartDebuggingRequest 指示除錯介面卡客戶端支援 startDebugging

在 10 月版本中,VS Code 已實現了 startDebugging

提議的 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟

  1. 查詢您要嘗試的提議並將其名稱新增到 package.json#enabledApiProposals
  2. 使用最新的vscode-dts並執行vscode-dts dev。它會將相應的d.ts檔案下載到您的工作區中。
  3. 您現在可以根據該提議進行程式設計。

您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。

靜態筆記本預載入

新的 notebookPreload 建議的貢獻點允許擴充套件貢獻載入到特定型別筆記本中的指令碼。

{
    "contributes": {
        "notebookPreload": [
            {
                "type": "jupyter-notebook", // Type of notebook for the preload script
                "entrypoint": "./path/to/preload.js"
            }
        ]
    }
}

此貢獻點由 contribNotebookStaticPreloads API 提案控制。擴充套件可以使用預載入在筆記本 JavaScript 環境中載入或定義全域性變數。

預載入指令碼必須是匯出 activate 函式的 JavaScript 模組。所有預載入都在任何渲染器指令碼之前進行評估。

筆記本渲染器可以訪問所有輸出項

自定義筆記本渲染器現在可以訪問其正在渲染的輸出項的所有 MIME 資料。如果渲染器確定它無法正確渲染主輸出項,此 API 提案允許它回退到渲染其他 MIME 型別。

此提案的入口點是新的 OutputItem._allOutputItems 屬性。該屬性是當前輸出項包含的所有 MIME 型別的有序列表。列表中的每個項都具有 { mime, getItem() } 的形式。mime 是 MIME 型別,例如 text/htmlimage/png,而 getItem() 函式返回一個 Promise,用於該 MIME 型別的 OutputItem

以下是渲染器如何使用此新 API:

async function renderOutputItem(outputInfo, element, signal) {
  const didRender = tryRenderMainItem(outputInfo, element);

  if (!didRender) {
    // Fallback to render `text/html`
    const htmlItem = await outputInfo._allOutputItems
      .find(item => item.mime === 'text/html')
      ?.getItem();
    if (htmlItem) {
      // Here we can either render the 'text/html' item ourselves
      // or delegate to another renderer.
      const renderer = await ctx.getRenderer('vscode.builtin-renderer');
      if (renderer) {
        return renderer.renderOutputItem(htmlItem, element, signal);
      }
    }
  }
}

試試這個提案,讓我們知道您的想法!

擴充套件遙測 API

為了進一步推動遙測最佳實踐並增強擴充套件提供的遙測功能,此迭代引入了建議的 telemetryLogger API。此 API 允許擴充套件提供 TelemetryAppender,它充當核心傳送邏輯(使用 Application Insights 或其他資料記錄服務實現)。然後使用此 TelemetryAppender 例項化 TelemetryLogger,這是您應該透過它記錄遙測的類。

TelemetryLogger 提供了一個共享輸出通道來檢視已傳送的遙測事件、正確的遙測設定檢查以及個人身份資訊清理。此外,透過利用 VS Code API 丟擲的任何錯誤都將記錄到您的 appender 中,以便更好地進行錯誤診斷。

遙測示例中有一個簡單的示例,您可以在問題 #160090 中提供反饋。

日誌輸出通道

在上一里程碑中,我們引入了 LogOutputChannel API 提案,用於建立僅用於日誌記錄的輸出通道。此迭代中,我們為其添加了 logLevel 屬性和 onDidChangeLogLevel 事件。logLevel 屬性表示輸出通道的當前日誌級別,而 onDidChangeLogLevel 事件在輸出通道的日誌級別更改時觸發。

/**
 * A channel for containing log output.
 */
export interface LogOutputChannel extends OutputChannel {

    /**
     * The current log level of the channel.
     * Defaults to application {@link env.logLevel application log level}.
     */
    readonly logLevel: LogLevel;

    /**
     * An {@link Event} which fires when the log level of the channel changes.
     */
    readonly onDidChangeLogLevel: Event<LogLevel>;
    ...
    ...
}

我們還在 env 名稱空間中添加了 logLevel 屬性和 onDidChangeLogLevel 事件,以表示應用程式的當前日誌級別,並且在應用程式的日誌級別更改時觸發該事件。

export namespace env {
  /**
   * The current log level of the application.
   */
  export const logLevel: LogLevel;

  /**
   * An {@link Event} which fires when the log level of the application changes.
   */
  export const onDidChangeLogLevel: Event<LogLevel>;
}

工程

最佳化輸入延遲

隨著 VS Code 的規模不斷擴大,按下鍵盤按鍵時發生的活動量也隨之增加。本次迭代中,我們退後一步,深入研究了在編輯器中輸入時到底發生了什麼,以及哪些工作可以推遲到按鍵呈現在螢幕之後。這次探索的主要成果是:

  • 進行了一些更改,以儘可能多地將工作推遲到編輯器中的按鍵呈現在螢幕上之後。粗略估計,這可以使輸入延遲減少約 15%(當 IntelliSense 未顯示時),當 IntelliSense 重新篩選時,減少幅度甚至更大。
  • 我們現在擁有更精細的技術,可以手動測量輸入延遲並在此亞毫秒級*進行最佳化。
  • 一項正在進行中的更改將幫助我們跟蹤和報告輸入延遲樣本。這將為我們提供一些具體的數字,以便維護和改進。

這僅僅是這項工作的開始,我們還有更多更改將在下個版本中釋出。

* 這些數字非常依賴於用於測試的硬體。在強大的硬體上改進 0.5 毫秒,在更普通的硬體上可能最終會變成 2 毫秒。

自動渲染器效能分析

VS Code 的渲染器程序負責其 UI;它確保游標閃爍、輸入和儲存能力。渲染器程序中的任何效能問題都會對使用者可見,並導致糟糕的體驗。為了幫助我們識別和修復渲染器程序中的效能問題,我們添加了一個新設定 application.experimental.rendererProfiling,可用於自動對渲染器程序進行效能分析。該設定可以設定為 on 以啟用效能分析,設定為 off 以停用效能分析。啟用後,當渲染器程序“出現壓力”時,將對其進行幾秒鐘的效能分析,然後對效能分析結果進行分析、匿名化併發送以供檢查。您可以使用視窗日誌來跟蹤效能分析過程。

請注意,此功能目前預設關閉,因為我們仍在學習和調整。請嘗試一下,並告訴我們您的想法。

Windows 11 上下文選單

在此版本中,VS Code 安裝程式預設將“使用 Code - Insiders 開啟”上下文選單項新增到 Windows 11 上下文選單中,供 Insiders 使用者使用。對於以前在安裝 Insiders 時選擇使用上下文選單的使用者,更新到最新 Insiders 後,舊樣式選單 Shift + F10 中顯示的條目將被新條目替換。對於其他使用者,您需要重新安裝 Insiders 並在安裝嚮導中選擇啟用此選單條目。由於我們在開發選單條目時遇到問題,我們計劃將此功能限制在 Insiders 版本中幾個里程碑,以便在將其推送到所有 Windows 11 使用者的穩定版本之前獲得信心。

VS Code Install dialog with option to add Open with Code - Insiders action

“使用 Code Insiders 開啟”操作隨後將在 Windows 檔案資源管理器的資料夾和檔案上下文選單中可用。

Windows 11 folder context menu

值得注意的修復

  • 151019 除錯懸停在懸停時隱藏
  • 153852 提案:刪除 ES5 類相容性以加快擴充套件 API
  • 156104 如果埠已靜態轉發,則不要在 URL 連結點選時自動轉發埠
  • 158921 其他位置修改的設定指示器懸停內容溢位

感謝

最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝

問題跟蹤

對我們問題跟蹤的貢獻

vscode 的貢獻

vscode-pull-request-github 的貢獻

vscode-dev-chrome-launcher 的貢獻