🚀 在 VS Code 中取得

2022 年 10 月 (版本 1.73)

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

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


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

如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com

Insiders: 想要盡快試用新功能嗎?您可以下載每夜建置的 Insiders 版本,並在最新更新可用時立即試用。

協助工具

新的音訊提示

有新的 音訊提示 可協助處理工作和終端機。

  • 工作已完成 - 表示工作已完成的聲音(由 audioCues.taskCompleted 設定控制)。
  • 工作失敗 - 工作失敗時發出的聲音 (audioCues.taskFailed)。
  • 終端機快速修復 - 如果目前行上有可用的快速修復 (audioCues.terminalQuickFix)。

螢幕閱讀器模式中的文字換行

當在 螢幕閱讀器模式 中執行 VS Code 時,文字換行已停用,以防止螢幕閱讀器體驗降級。此問題已修正,且可透過 editor.wordWrap 啟用。

協助工具設定標籤

現在提供 accessibility 標籤,以改善協助工具相關設定的可探索性。

偏好設定:開啟協助工具設定 命令會使用 @tag:accessibility 篩選器開啟設定編輯器。

工作台

當在搜尋檢視的結果樹狀檢視中按一下滑鼠右鍵時,內容功能表中現在有兩個新選項。

  • 選取將搜尋限制於資料夾會將選取的資料夾路徑新增至要包含的檔案文字方塊。將路徑新增至此文字方塊會將搜尋結果限制為符合所列路徑或模式的結果。

    Using Restrict Search to Folder

    佈景主題:GitHub 深色微光(在 vscode.dev 上預覽)

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

    Using Exclude Folder from Search

    佈景主題:GitHub 深色微光(在 vscode.dev 上預覽)

命令中心模式捷徑

命令中心新增了一個頂端區段,讓您輕鬆探索如何導覽至檔案、執行命令等等。

此模式簡短清單也提供快速鍵提示,讓您可以直接跳至最常用的模式(例如前往檔案),而無需透過命令中心。

命令中心 UI 預設不會顯示在標題列中,但您可以透過視窗:命令中心 (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 淺色預設(在 vscode.dev 上預覽)

輸入 UI 上的圓角

文字輸入、文字區域和下拉式清單現在都顯示圓角,以符合先前版本中套用至按鈕的相同樣式。

Text input with rounded corners in the Search input box

快速選取清單樣式更新

快速選取 UI 中使用的清單樣式已稍微重新整理,具有圓角和增加的左右邊界。

更新清單檢視的 codicon

平面清單和樹狀清單檢視現在使用更易讀的 codicon 來表示清單類型。

輔助側邊欄前景色彩

輔助側邊欄通常模仿主要側邊欄的佈景主題,但並非所有佈景主題金鑰都被正確擷取。輔助側邊欄現在正確使用 "sideBar.foreground" 佈景主題金鑰。

主要側邊欄在右側,包含 [檔案總管],輔助側邊欄在左側,包含 [大綱] 檢視,兩者都使用相同的粉紅色前景色彩。

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

佈景主題:GitHub 淺色預設(在 vscode.dev 上預覽)

不再有「摺疊範圍過多」通知

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

Folding limit warning in the language status

預設摺疊提供者

通常,當某種語言有多個作用中的摺疊提供者時,VS Core 會嘗試合併結果。如果存在衝突範圍,則會捨棄某些範圍。此外,並非所有摺疊提供者都可以與其他提供者組合。

新的 editor.defaultFoldingProvider 設定可讓您選取要使用的摺疊提供者。提供者的名稱是貢獻它的擴充功能 ID ({發行者}.{擴充功能})。

以下範例將 (假設的) 擴充功能 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

當可以在字元層級上解決衝突而沒有衝突時,會顯示合併組合選項,且可用於自動解決衝突。

在下方影片中,兩個符號都匯入到相同的匯入陳述式中

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) 或變更其嚴重性 (warningerror)

  • 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 存放庫Azure Repos 擴充功能時,上述所有項目也適用。

Web 中的當地語系化改進

幾個月前,我們開始致力於 Web 版 VS Code 的當地語系化。到目前為止,VS Code 核心和擴充功能(在其擴充功能資訊清單中具有靜態宣告的字串)都能夠進行當地語系化。在此反覆運算中,我們已完成最後一塊拼圖:擴充功能程式碼中的字串。這是因為我們上個月建議的當地語系化 API 已最終確定而完成的。

請注意,隨著我們繼續在所有擴充功能中採用此新 API,VS Code 將變得更加當地語系化。如果您是擴充功能作者,您可以在 vscode-l10n 存放庫 中深入了解新的 API。

擴充功能貢獻

Python

移轉至 isort 擴充功能

在我們的 2022 年 5 月 版本 中,我們宣布推出新的 isort 擴充功能,可與 Python 擴充功能搭配使用以排序匯入。例如,當您開啟檔案且匯入不符合 isort 標準時,它會顯示錯誤診斷,並提供程式碼動作來修正匯入順序。在此版本中,我們正在移轉為使用獨立 isort 擴充功能,而不是 Python 擴充功能中內建的 isort 支援,方法是與 Python 擴充功能一起自動安裝它。

使用 Pylance 時,自動匯入預設為關閉

自從在 Pylance 中首次實作自動匯入以來,我們收到了許多關於自動匯入有多混淆,以及有時有多煩人的意見反應,例如,當意外接受建議時,會將匯入自動新增至檔案。從此版本開始,使用 Pylance 時,預設不再自動匯入套件。如果您想要重新啟用 Python 專案的自動匯入,您可以透過設定 "python.analysis.autoImportCompletions": true 來執行此操作。

Pylint 和 Flake8 擴充功能建議

在我們的 先前 版本 中,我們宣布推出新的 PylintFlake8 擴充功能,這些擴充功能與 Python 擴充功能透過 語言伺服器協定 (LSP) 協同運作,以提供程式碼檢查。在此版本中,如果您仍在使用 Python 擴充功能中內建的 Pylint 和 Flake8 功能,我們會顯示通知,提示您安裝這些新的擴充功能。

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

遠端開發

遠端開發擴充功能可讓您使用容器、遠端電腦或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。此版本的重點包括

  • 開發容器 範本 - 根據現有範本快速建立開發容器。
  • 開發容器 功能 - 透過包含預先封裝的功能(或 建立您自己的功能!)將功能新增至開發容器
  • 建立新的開發容器,而無需啟始資料夾。

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

GitHub Pull Requests 和 Issues

持續開發 GitHub Pull Requests 和 Issues 擴充功能,可讓您處理、建立和管理提取要求和問題。查看擴充功能 0.54.0 版本的變更記錄,以查看其他重點。

預覽功能

TypeScript 4.9

此更新包含對即將推出的 TypeScript 4.9 版本的支援。請參閱 TypeScript 4.9 反覆運算計畫,以深入了解 TypeScript 團隊目前正在進行的工作。一些編輯器工具重點

若要開始使用 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 和 Web 檢視執行

MarkdownString 中的 命令連結是在 VS Code 的懸停訊息或 IntelliSense 詳細資料中建立自訂互動的實用方式。Web 檢視也可以使用命令連結,直接從 Web 檢視觸發 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'] };

對於 Web 檢視,WebviewOptions.enableCommandUris 屬性現在可以是已啟用命令的清單,而不是簡單的 true/false

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

我們強烈建議所有使用命令連結的擴充功能都採用此新的、更具限制性的 API 來提高安全性。

Web 檢視和 Web 檢視檢視的一致來源

為了縮短 Web 檢視 的載入時間,我們現在嘗試為給定類型的 Web 檢視的所有執行個體維護一致的來源。這有兩個主要優點

  • Web 檢視可以更好地利用快取。這表示本機資源應該載入得更快。

  • Web 檢視可以使用本機儲存空間和其他 Web API,這些 API 會依來源進行分割。

    請記住,Web 檢視的所有執行個體現在都將在相同的來源上執行,因此如果它們正在使用本機儲存空間等 API,請務必分割每個資源的文件特定資料/狀態。例如,localStorage.setItem('scrollPosition', 100) 會將所有 Web 檢視執行個體的 scrollPosition 設定為 100。如果您想要設定個別資源的捲動位置,您也需要在金鑰中包含資源 ID:localStorage.setItem(myDocUri, JSON.stringify({scrollPosition: 100 }))

    您也絕不應使用 localStorage 或類似的 API 來儲存重要資料,例如文件內容。雖然 VS Code 會盡最大努力為 Web 檢視維護一致的來源,但我們無法保證來源不會變更。

    在許多情況下,您應該使用 Web 檢視狀態 API,因為這些 API 會為您處理上述兩個問題。

來源是針對每個擴充功能和 Web 檢視類型隨機產生的。相同的來源用於 Web 檢視的所有執行個體。

目前,一般 Web 檢視Web 檢視檢視 都嘗試維護一致的來源。我們計畫在下一個反覆運算中針對自訂編輯器和筆記本 Web 檢視採用此方法。

偵錯配接器協定

新的 'startDebugging' 反向要求

今天 VS Code 支援多個並行偵錯工作階段,但 偵錯配接器協定 (DAP) 僅涵蓋單一工作階段。這表示以程式設計方式建立新的偵錯工作階段不是 DAP 的一部分,而且只能在 DAP 或偵錯配接器外部完成,通常在包含偵錯配接器的偵錯擴充功能中。因此,非 VS Code DAP 用戶端無法輕易使用多工作階段功能(例如自動偵錯子進程),因為它們通常僅使用偵錯配接器,而不使用 VS Code 特定偵錯擴充功能。

為了改善這種情況,我們已將新的反向要求 startDebugging 新增至 DAP,讓擴充功能可以從偵錯配接器內部建立新的偵錯工作階段(與呼叫者類型相同)。用戶端功能 supportsStartDebuggingRequest 向偵錯配接器指示用戶端支援 startDebugging

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

建議的 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() 函式會傳回該 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 擲回的任何錯誤都會記錄到您的附加器中,以獲得更好的錯誤診斷。

遙測範例中有一個簡單的範例,您可以在 問題 #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>;
    ...
    ...
}

我們也將 logLevel 屬性和 onDidChangeLogLevel 事件新增至 env 命名空間,以代表應用程式的目前記錄層級,而當應用程式的記錄層級變更時,會觸發該事件。

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 的規模越來越大,按下按鍵時的活動量也隨之增加。在此反覆運算中,我們退後一步,徹底調查當您在編輯器中輸入時究竟會發生什麼事,以及我們可以將哪些內容延遲到在螢幕上轉譯按鍵之後。此探索的主要成果是

  • 已進行數項變更,以盡可能將更多工作延遲到在編輯器中轉譯按鍵之後。對此影響的粗略估計是在未顯示 IntelliSense 時,輸入延遲減少約 15%,而在重新篩選 IntelliSense 時,輸入延遲甚至會減少更多。
  • 我們現在有更精細的技術,可手動測量輸入延遲,並在此次毫秒* 層級進行最佳化。
  • 有一個進行中的變更將協助我們追蹤和報告輸入延遲範例。這將為我們提供一些具體的數字來維護和改進。

這只是此工作的開始,我們還有更多變更應該會在下一個版本中推出。

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

自動轉譯器分析

VS Code 的渲染器進程 (renderer-process) 負責其使用者介面 (UI);它確保游標閃爍、能夠輸入文字以及儲存檔案。渲染器進程中的任何效能問題都會對使用者可見,並導致不良的使用體驗。為了幫助我們識別和修復渲染器進程中的效能問題,我們新增了一個新的設定 application.experimental.rendererProfiling,可用於自動分析渲染器進程的效能。此設定可以設為 on 以啟用效能分析,以及 off 以停用效能分析。啟用後,渲染器進程將在「看起來有壓力」時進行幾秒鐘的效能分析,然後分析效能資料、匿名化處理,並發送以供檢查。您可以使用視窗記錄來追蹤效能分析的過程。

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

Windows 11 關聯式選單

在此版本中,VS Code 安裝程式預設會為 Insiders 版本在 Windows 11 關聯式選單 中新增一個使用 Code - Insiders 開啟關聯式選單項目。對於先前在安裝 Insiders 版本時選擇加入關聯式選單的使用者,當更新到最新的 Insiders 版本時,舊式選單 Shift + F10 中顯示的項目將被替換為較新的項目。對於其他使用者,您需要重新安裝 Insiders 版本並在安裝精靈中選擇加入以啟用此選單項目。由於我們在開發選單項目時遇到了一些問題,我們計劃將此功能限制在 Insiders 版本幾個里程碑,以在將其推廣到所有 Windows 11 使用者的 Stable 穩定版本之前獲得信心。

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

然後,使用 Code Insiders 開啟動作將在 Windows 檔案總管的資料夾和檔案關聯式選單中提供。

Windows 11 folder context menu

值得注意的修正

  • 151019 除錯懸浮視窗在滑鼠懸停時會隱藏
  • 153852 提案:移除 ES5 Class 相容性以加速擴充功能 API
  • 156104 如果連接埠已靜態轉發,則不要在點擊 URL 連結時自動轉發連接埠
  • 158921 設定在其他地方修改指示器的懸浮內容溢出

感謝您

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

Issue 追蹤

對我們的 Issue 追蹤的貢獻

vscode 的貢獻

vscode-pull-request-github 的貢獻

vscode-dev-chrome-launcher 的貢獻