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

2021 年 11 月 (版本 1.63)

更新 1.63.1:此更新解決了這些安全問題

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

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


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

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

在 VS Code 團隊的釋出派對上觀看此版本新功能的亮點影片錄製,可在我們的 YouTube 頻道上找到。

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

工作臺

安裝前預覽主題

您現在可以在安裝前預覽 Marketplace 上可用的主題。從顏色主題下拉選單(⌘K ⌘T (Windows、Linux Ctrl+K Ctrl+T))中,選擇瀏覽附加顏色主題以列出 Marketplace 主題。當您在下拉選單中導航時,VS Code UI 將預覽顏色主題。

在主題條目上按Enter以安裝擴充套件。

配置問題導航順序

您現在可以定義轉到下一個問題⌥F8 (Windows、Linux Alt+F8))和轉到上一個問題⇧⌥F8 (Windows、Linux Shift+Alt+F8))導航的順序。在以前的版本中,導航順序基於嚴重性,先是錯誤,然後是警告,然後是其餘的。新的問題:排序順序 (problems.sortOrder) 設定允許您按問題的severityposition導航。當使用"problems.sortOrder": "position"時,第 5 行的警告將顯示在第 13 行的錯誤之前,等等。

多語言特定編輯器設定

您現在可以一次性配置多種語言的語言特定編輯器設定。以下示例展示瞭如何在settings.json檔案中一起自定義javascripttypescript語言的設定。

"[javascript][typescript]": {
  "editor.maxTokenizationLineLength": 2500
}

自動 2x2 編輯器網格

真正的 2x2 網格編輯器佈局只能使用檢視:網格編輯器佈局 (2x2) 命令實現。現在,您可以透過手動拆分編輯器直到達到 2x2 網格來獲得相同的佈局,並且該網格將自動鎖定為真正的 2x2 佈局。

列表中更好的 Escape 處理

現在,在列表和樹中按Escape將把選擇縮小到單個元素,然後再清除它。

Web 上啟用查詢

當 VS Code 在瀏覽器中執行(以下示例中為 github.dev)時,Web 檢視內現在支援查詢控制元件。

Find widget on github.dev

由於當前瀏覽器 API 的限制,查詢的行為與在桌面版上略有不同。例如,在 Web 上,VS Code 只能高亮顯示當前的查詢結果。在桌面版上,當前檔案中的所有結果都將高亮顯示。

截圖模式顯示命令名稱

您現在可以選擇在截圖模式下透過鍵盤快捷方式觸發命令時顯示命令名稱。使用截圖模式:鍵盤快捷方式格式 (screencastMode.keyboardShortcutsFormat) 設定來配置此行為。

Screencast mode with command names along with keystrokes

預釋出擴充套件

VS Code 現在支援擴充套件的預釋出版本,因此您可以選擇安裝它們並試用擴充套件的最新前沿功能。VS Code 在擴充套件安裝下拉選單中顯示一個額外的安裝預釋出版本選項,用於安裝預釋出版本。

Pre-Release install dropdown

主題:GitHub Light Theme

安裝後,指示器會明確您是否正在使用擴充套件的預釋出版本。

Pre-Release version indication

主題:GitHub Light Theme

如果您已安裝了某個擴充套件的預釋出版本,則可以輕鬆切換到它。

Switch to Pre-Release version button

主題:GitHub Light Theme

更新的查詢操作

搜尋檢視中的查詢操作現在使用與編輯器中查詢操作相同的樣式。

原始碼管理

在快速差異中忽略修剪空白

您現在可以使用scm.diffDecorationsIgnoreTrimWhitespace設定來配置左側邊欄中顯示的 SCM 快速差異功能,以忽略修剪空白。

Notebook

調整筆記本中的字型大小

新的notebook.markup.fontSize設定允許您控制筆記本 Markdown 內容的字型大小。此設定的預設值為當前編輯器字型大小的 120%。

Markdown 單元格中的語法高亮顯示

VS Code 現在支援 Markdown 單元格內圍欄程式碼塊的語法高亮顯示。

A fenced code block in a notebook with syntax highlighting

筆記本中的 Markdown 現在可以連結到當前工作區中的其他檔案。

/開頭的連結相對於工作區根目錄解析。以./開頭或僅以檔名開頭的連結相對於當前筆記本解析。

此外,包含httphttps的 Markdown 文字現在會自動轉換為連結。

A link automatically created from Markdown text

這與 JupyterLab 等其他筆記本渲染器的行為相匹配。

筆記本工具欄標籤的動態可見性

筆記本工具欄可以根據編輯器組的寬度決定是否顯示操作標籤,透過將notebook.globalToolbarShowLabel設定為dynamic。它將首先隱藏最右側操作組的標籤,然後是左側操作組的標籤。如果所有標籤都隱藏後編輯器組仍然太窄,操作將被移到溢位選單中。

notebook.globalToolbarShowLabel的其他值現在是alwaysnever

編輯器

Unicode 高亮顯示

預設情況下,原始碼中所有不常見的不可見字元現在都將高亮顯示。

Unicode Highlighting Example: Invisible character is highlighted with hover explanation

此外,與 ASCII 字元容易混淆的字元也會高亮顯示。

Unicode Highlighting Example: Confusing character is highlighted with hover explanation

您可以閱讀“隱形 JavaScript 後門”部落格文章這篇劍橋大學文章,瞭解隱形或易混淆的 Unicode 字元如何在 Unicode 欺騙攻擊中被使用。

請注意,此功能無法檢測所有可能的 Unicode 欺騙攻擊,因為這取決於您的字型和區域設定。此外,對模糊字元的檢測是啟發式完成的。為了安全起見,應使用 VS Code 的工作區信任受限模式來審查原始碼,因為在不受信任的工作區中,所有非 ASCII 字元都將高亮顯示。

可以將設定editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacterseditor.unicodeHighlight.nonBasicASCII設定為false以停用相應的功能。

可以使用以下設定從高亮顯示和註釋或文字中的字元中排除單個字元。

  • editor.unicodeHighlight.allowedCharacters - 不高亮顯示的特定字元列表。
  • editor.unicodeHighlight.includeComments - 啟用註釋中字元的高亮顯示。

此外,Markdown 文件預設不會高亮顯示。

多個懸停提供程式

當文件有多個懸停提供程式時,只要其中一個提供程式返回結果,懸停就會顯示,並隨著其他提供程式的結果傳入而更新。

之前 之後

任務

automationProfile 設定

舊的設定terminal.integrated.automationShell.*已被棄用,並添加了新的terminal.integrated.automationProfile.*設定。這允許在指定用於任務的終端屬性(包括 shell、圖示、顏色和 shell 引數)時擁有更大的自由度。

gulpfile.ts 支援

內建的 gulp 擴充套件現在支援從gulpfile.ts檔案中檢測任務。

NPM 指令碼檢視改進

NPM 指令碼檢視顯示有關指令碼的更多詳細資訊。

NPM Scripts view with script details

還有一個新設定npm.scriptExplorerExclude,允許您指定要從 NPM 指令碼檢視中排除的指令碼。

語言

TypeScript 4.5

VS Code 現在隨 TypeScript 4.5 一起提供。此更新帶來了許多新的語言功能,以及工具改進和錯誤修復。

您可以在TypeScript 部落格上閱讀有關 TypeScript 4.5 的更多資訊。

方法簽名補全

方法簽名補全讓您能夠快速覆蓋方法和實現介面方法。有了此功能,當您在類主體中時,對方法的建議(例如來自超類的方法)在接受時會插入方法的完整簽名。

如果您正在編寫 TypeScript,接受建議還會添加簽名中引用的型別所需的所有匯入。

此功能需要工作區中的 TypeScript 4.5,並且可以使用typescript.suggest.classMemberSnippets.enabledjavascript.suggest.classMemberSnippets.enabled啟用/停用。

JSX 屬性補全

在 JavaScript 和 TypeScript 中補全 JSX 屬性時,VS Code 現在將自動插入屬性值。

可以使用javascript.preferences.jsxAttributeCompletionStyletypescript.preferences.jsxAttributeCompletionStyle配置這些補全的行為。

可能的設定值是

  • auto - 根據其型別推斷屬性樣式。字串使用attr="",而其他型別使用attr={}
  • braces - 始終使用大括號。
  • None- 僅補全屬性名稱。

刪除舊 TS 版本的語義高亮顯示

此更新刪除了在工作區中使用 TypeScript 4.1 或更早版本時對語義高亮顯示的支援。

TypeScript 4.2 添加了對語義高亮顯示的原生支援。在舊版本上,語義高亮顯示是作為 VS Code 提供的 TypeScript 語言外掛實現的。刪除外掛可以減少維護和釋出的程式碼量。

Markdown 預覽自定義編輯器

您現在可以使用重新開啟方式命令將 Markdown 檔案顯示為 Markdown 預覽而不是文字。

Markdown:開啟預覽命令不同,重新開啟方式不會開啟新的編輯器選項卡,而是更改已開啟的編輯器選項卡的顯示方式。再次使用重新開啟方式將檔案切換回預設文字檢視。

此外,您現在可以使用workbench.editorAssociations設定配置 VS Code 自動將任何 Markdown 檔案作為預覽開啟。

"workbench.editorAssociations": {
  "*.md": "vscode.markdown.preview.editor"
}

Markdown 預覽增量更新

內建的 Markdown 預覽現在會在您鍵入時更智慧地更新自身。預覽不再為每次更新替換整個 Markdown 預覽文件,而是使用 DOM 差異化僅替換預覽文件中已更改的元素。這減少了鍵入時有時會發生的抖動。

JSON 語言指示器

在 JSON 檔案中編輯時,現在有一個語言指示器{},顯示內容是否已針對一個或多個 JSON 架構進行了驗證。將滑鼠懸停在指示器上會顯示驗證狀態和開啟架構的連結。

JSON language selector

JSON 架構快取

來自架構儲存 (json.schemastore.org) 的 JSON 架構現在已本地快取。這節省了網路頻寬,並有助於離線工作。

Emmet 刪除標籤命令改進

當標籤在刪除前單獨一行時,Emmet: 刪除標籤命令現在會刪除包含標籤的行,以及適用的多餘空行。當要刪除的標籤之間有空行時,它現在還會正確地重新縮排剩餘的行。

Web 版 VS Code

Azure Repos

在此里程碑中,我們與 Azure DevOps 工程團隊合作,在 Azure Repos 中的檔案中心添加了一個新的鍵盤快捷方式。在檔案中心瀏覽儲存庫時,您可以按.以在https://vscode.dev中開啟儲存庫。

我們還為您的 Azure Repos 儲存庫添加了一個新的入口點。您現在可以使用遠端選擇器中開啟遠端儲存庫... 選單項下的新從 Azure Repos 開啟儲存庫... 選單項,從https://vscode.dev中連線到您的 Azure Repos 儲存庫。

此外,您現在可以使用舊版 Azure DevOps URL 格式(例如,https://.visualstudio.com)在 vscode.dev 中開啟 Azure Repos 儲存庫,方法是在 URL 字首新增https://vscode.dev

改進的遠端選單

遠端選單中現在出現三個附加命令

  • 關閉遠端工作區 - 將工作區更改為空白工作區。
  • 下載 Visual Studio Code - 轉到https://vscode.com.tw/download
  • 轉到儲存庫 - 在原始碼管理主機網站上開啟儲存庫,例如 GitHub 儲存庫的https://github.com

對擴充套件的貢獻

Java

Java 擴充套件包現在有一個產品內歡迎體驗,可幫助您在 VS Code 中配置和學習 Java。演練涵蓋安裝 Java 執行時和有用的框架、開啟和除錯專案以及直接在 VS Code 中執行測試。

Extension Pack for Java walkthrough

您還可以檢視https://vscode.com.tw/docs/java上的 Java 教程和使用者指南,以幫助您入門。

Jupyter

效能改進

對 Jupyter 核心(特別是Python)的啟動進行了多項效能改進。以前開啟過筆記本的使用者在啟動核心時會看到 2 倍的速度提升。重新啟動Python核心也應該更快。

有關為提高效能而進行的更改的更多詳細資訊,您可以檢視以下問題:

  • 支援預熱核心以改善筆記本的啟動體驗。 (#7903)
  • 更快地啟用 Conda 等 Python 環境。 (#8342)
  • 啟動 jupyter 時避免啟動預設核心。 (#8185)
  • 一旦找到 IPyKernel,就避免再次查詢。 (#8196)
  • 當不需要 Jupyter 執行時來啟動核心時,避免不必要地搜尋Jupyter包。 (#8350, #8352)

核心故障處理方面的改進

已新增診斷訊息和快速修復,以警告在使用!pip install安裝 Python 包時使用該命令。快速修復將幫助使用者選擇正確的命令%pip install

已進行多項改進,以便在核心執行期間啟動或停止失敗時提供更好、更有意義的錯誤訊息。錯誤現在顯示在單元格輸出中,並附有如何解決問題的說明。這確保使用者知道問題並可以解決它,以防他們錯過 VS Code 右下角顯示的錯誤。

Python

對不受信任和虛擬工作區的有限支援

Python 擴充套件現在對不受信任的工作區(參見工作區信任)或虛擬檔案系統(例如,如果開啟遠端 GitHub 儲存庫)有有限的支援。在這種情況下只提供部分 IntelliSense,並且擴充套件的其他功能不可用。

  • 懸停、相同檔案補全和內建函式(如 print)的補全可用,但擴充套件僅限於處理當前開啟的檔案。
  • 對於不受信任的工作區,僅支援 Pylance 語言伺服器。
  • 對於虛擬工作區,僅支援 Jedi 和 Pylance。

狀態列中的語言項已更新以指示這些情況。

Limited support for Python in an untrusted workspace

模組重新命名重構

您現在可以使用 Python 和 Pylance 擴充套件更輕鬆地重新命名模組。重新命名 Python 模組後,系統會提示您選擇是否要更改程式碼中的所有匯入和引用。如果您不確定,可以先預覽更改的效果,然後再做出決定。一旦您確定,您可以選擇應用重構放棄重構以不應用建議的更改。

遠端開發

遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

1.63 版的主要功能包括:

  • 現在,當在 SSH 伺服器上工作時,可以使用在容器中重新開啟命令在容器中開啟資料夾。
  • 改進的轉發埠安全性可避免不安全的埠。
  • 可配置的 WSL 連線方法允許您使用wsl.exe或套接字連線與伺服器通訊。
  • 高階容器配置影片,涵蓋如何更改專案的預設位置提高 Windows 上的效能

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

GitHub 拉取請求和議題

GitHub 拉取請求和問題擴充套件的開發仍在繼續,該擴充套件允許您處理、建立和管理拉取請求和問題。檢視該擴充套件 0.34.0 版本的更新日誌以瞭解亮點。

擴充套件創作

更新了 API 提案結構

我們更改了 API 提案的管理方式。以前,有一個包含所有提案的單一檔案vscode.proposed.d.ts。這個檔案已經變得很大,很難判斷擴充套件使用了哪些提案,以及某個提案是否已在穩定 API 中。現在,每個提案都有一個檔案。

例如

每個提案都有一個唯一的名稱,並且希望使用提案 API 的擴充套件需要在其package.json中列出這些名稱。package.json中的enableProposedApi屬性被新的enabledApiProposals替換,它是一個提案名稱的字串陣列,並支援 IntelliSense 和驗證。

IntelliSense when authoring the enabledApiProposals property

API 提案的更新流程應如下所示:

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

詳細的遷移指南和示例遷移可在issue #136964中找到。另請注意,關於提案 API 使用的限制沒有改變。使用提案 API 的擴充套件不能釋出,也不能按原樣使用。

快速選擇 API 改進

在此迭代中,我們正在最終確定 VS Code 中 QuickPick 的幾個 API。

QuickPickItem 內聯按鈕

提供豐富的輸入體驗是我們的擴充套件 API 的一個目標,使用 VS Code Quick Pick 的熟悉性可以實現強大而簡單的 UI 流程。一個新增功能是,擴充套件現在可以向單個QuickPickItem新增按鈕。

QuickPickItem buttons

單擊按鈕會觸發QuickPick物件上存在的onDidTriggerItemButton事件。我們期待看到您在擴充套件中如何使用這些按鈕。

更新專案時保持滾動位置的能力

除了能夠向QuickPickItem新增按鈕之外,您可能還希望在更新專案時保持滾動位置。這是擴充套件的常見用例,他們希望

  • 實現“從列表中刪除此項”(例如,Ctrl/Cmd + P x QuickPickItemButton)。
  • 以某種方式實現“切換此項”(例如“插入程式碼片段”命令)。
  • 非同步載入快速選擇中的專案。

window.createQuickPick()返回的QuickPick物件上的keepScrollPosition屬性允許您控制快速選擇中的滾動位置 (cursorTop) 是否返回到列表頂部。

身份驗證 API 改進

在此迭代中,我們正在最終確定與 VS Code 中的身份驗證相關的幾個 API。

強制建立新會話

有時,當您使用authentication.getSession()獲取會話時,它可能對某些資源有效,但對其他資源無效,透過再次進行登入流程,可以解決這種情況。

一個例子是 GitHub 單點登入的安全斷言標記語言 (SAML) 支援。預設情況下,為您生成的具有repo範圍的令牌將能夠訪問您自己的個人儲存庫。但是,如果您在啟用了 GitHub 單點登入的組織中,則必須明確授予會話訪問該組織中儲存庫的許可權。

在此示例中,GitHub 身份驗證提供程式將無法區分正確 SAML 認證的令牌與非 SAML 認證的令牌,因此為了糾正此行為,您現在可以強制建立新會話。

AuthenticationGetSessionOptions現在具有forceNewSession屬性,允許您要求使用者再次登入。如果將其設定為true,使用者將看到

Forcing sign in

您還可以指定一個帶有detail字串的物件,如果您想向用戶顯示更具描述性的訊息。

如果擴充套件有會話,則靜默檢索會話

我們觀察到的一種常見模式是,一些擴充套件在啟用時會檢查它們是否有可用的身份驗證會話。如果存在,它們將使用它預載入資料並提前執行其他任務以加快後續效能。缺點是,如果使用者尚未授予該擴充套件訪問身份驗證會話的許可權,則帳戶選單上將顯示一個徽章,並且選單中會新增一個專案,要求使用者登入。

這在某些情況下是可行的,但在其他情況下則不可取,並且會使使用者的螢幕變得混亂。為了解決這個問題,AuthenticationGetSessionOptions上有一個新屬性,名為silent,它允許您請求會話而不顯示任何指示擴充套件請求了它的資訊。這樣,如果擴充套件能夠獲取會話,它就可以做它想做的事情,但如果不能,它就不會打擾使用者。

注意:此 API 僅在擴充套件過去已獲得會話訪問許可權(換句話說,它是“受信任的擴充套件”)時才返回已驗證的會話。擴充套件永遠不會獲得使用者未同意的會話。

設定編輯器改進

有序設定

現在可以使用order欄位對單個設定進行排序。有序設定始終在同一類別中位於無序設定之前,並且排序是相對的。

未分組類別支援

設定也可以在主擴充套件標題下分組,而不是在特定類別下。為此,請將其中一個類別的類別標題設定為與擴充套件顯示名稱相同。

請注意,在下面的示例中,Conf > Language: Show Size 設定直接位於配置示例標題下。

Settings appearing directly under the extension header

支援數字和整數物件

設定編輯器中現在支援具有非空數字/整數值的物件。

An object setting in the Settings editor with number/integer values

executeCommand 的新型別簽名

在 VS Code 的早期版本中,vscode.commands.executeCommand被型別化為始終返回一個可能未定義值的 Promise。

export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;

但是,並非所有命令都能返回undefined。例如,返回專案陣列的命令通常在沒有結果時返回空陣列,而不是undefined。在這些情況下,您必須使用醜陋的型別轉換或新增不必要的檢查來編寫型別正確的程式碼。

為了解決這個問題,我們更新了executeCommand的型別定義,使其更明確。

export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;

這意味著如果命令可以返回undefined,您必須顯式地將| undefined作為型別引數的一部分傳遞。

vscode.commands.executeCommand<vscode.CallHierarchyItem | undefined>('vscode.prepareCallHierarchy', ...);

此更改僅影響executeCommand的型別定義,不改變此函式的行為。

為 exactOptionalPropertyTypes 更新 vscode.d.ts

我們更新了vscode.d.ts中的型別定義,以更好地支援 TypeScript 的exactOptionalPropertyTypes嚴格選項。這項工作包括:

  • 澄清哪些可選屬性可以被賦值為undefined
  • 在如何使用?| undefined方面更加一致。

如果您正在擴充套件中使用exactOptionalPropertyTypes,如果您在使用vscode.d.ts型別定義時遇到任何問題,請告訴我們。

來自 URI 的 HTML 自定義資料

自定義資料允許使用者和擴充套件透過新的 HTML 標籤和屬性擴充套件 HTML 語言支援。

在此版本中,HTML 自定義資料貢獻也接受文件 URI。您可以使用此功能透過TextDocumentContentProvider的文件在執行時提供自定義資料。

配置預設值覆蓋

您現在可以透過package.json中的configurationDefaults貢獻點覆蓋其他已註冊配置的預設值。例如,以下程式碼片段將files.autoSave設定的預設行為覆蓋為在焦點更改時自動儲存檔案。

"configurationDefaults": {
      "files.autoSave": "onFocusChange"
}

注意:具有applicationmachine作用域的配置無法被覆蓋。

替換輸出通道中的內容

在此里程碑中,OutputChannel物件上的新replace API 可以替換輸出通道中的內容。

/**
 * Replaces all output from the channel with the given value.
 *
 * @param value A string, falsy values will not be printed.
 */
replace(value: string): void;

workspaceContains 超時

當使用帶有 glob 模式的workspaceContains:啟用事件時,VS Code 會在工作區中啟動檔名搜尋,查詢與所提供的 glob 模式匹配的檔名。一旦找到匹配的檔名,擴充套件就會啟用。如果在 7 秒內未找到匹配的檔名,VS Code 現在將取消搜尋,並且擴充套件將不會被啟用。

釋出預釋出擴充套件

VS Code 現在支援擴充套件作者透過傳遞--pre-release標誌使用vsce釋出其擴充套件的預釋出版本。這意味著您可以將最新功能提供給選擇安裝預釋出版的使用者,並在正式擴充套件釋出之前獲得早期反饋。

vsce publish --pre-release

VS Code Marketplace 僅支援擴充套件版本的major.minor.patch,尚不支援semver預釋出標籤。因此,我們建議擴充套件使用major.EVEN_NUMBER.patch作為釋出版本,使用major.ODD_NUMBER.patch作為預釋出版本。例如:0.2.*用於釋出,0.3.*用於預釋出。VS Code 將自動將擴充套件更新到可用的最高版本,因此即使使用者選擇了預釋出版本,一旦有更高版本的擴充套件釋出,該使用者也將更新到釋出版本。

有關預釋出擴充套件的更多資訊,請參閱預釋出擴充套件主題。

語言伺服器協議

語言伺服器協議的新版本以及相應的 npm 模組已釋出。除了各種次要改進之外,新版本還包含行內值的提案實現。

除錯介面卡協議

輸出事件的新重要類別

除錯介面卡協議的Output事件用於將除錯物件的 stdout 和 stderr 流以及偵錯程式發出的資訊性訊息傳送到除錯控制檯。這種訊息流對於使用者來說可能很多,關鍵事情可能會被忽略。因此,為Output事件添加了一個新類別important,除錯介面卡可以使用它來顯示需要突出顯示且不被使用者忽略的關鍵訊息。important類別是客戶端在高度可見的 UI 中顯示重要資訊的提示,例如作為彈出通知。由於此類別是一個提示,客戶端可能會忽略該提示並假定為default類別 (console)。

執行控制請求的澄清和改進

此前,除錯介面卡協議規定所有“執行控制”請求(continuenextstepInstepOutstepBackreverseContinue)都在單個執行緒上操作,但實現可以決定忽略執行緒引數並在所有執行緒上操作。由於這種模糊的“單執行緒”語義並沒有真正用處,除錯介面卡通常會實現更有用的功能:

  • “步進”請求,它步進當前執行緒,同時允許其他執行緒透過恢復它們自由執行。
  • “繼續”請求,它恢復所有執行緒。

由於當前規範對於執行控制請求不切實際,我們已更改了所有執行控制請求(continuenextstepInstepOutstepBackreverseContinue)的規範,使其與通常的實現匹配。

此外,某些除錯介面卡需要“替代語義”,即stepcontinue僅在當前執行緒上操作,但保持所有其他執行緒處於掛起狀態。對於這種“替代行為”,已向所有執行控制請求添加了一個新的可選singleThread屬性。除錯介面卡必須使用相應的新的supportsSingleThreadExecutionRequests功能來指示客戶端執行控制請求支援singleThread屬性。

建議的擴充套件 API

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

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

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

QuickPickItem 分隔符

在此迭代中,我們引入了擴充套件透過提案 API (vscode.proposed.quickPickSeparators.d.ts) 向 Quick Pick 新增分隔符(也稱為“類別”)的功能。這對於分組專案或在專案之間留出一些空間非常有用。

Quick Pick separators

要向現有 Quick Pick 新增分隔符,您可以向現有專案列表新增一個新的QuickPickItem,但要指定QuickPickItem上的kind屬性並將其設定為QuickPickItemKind.Separator

在上面的示例中,您需要將以下物件新增到您的專案列表中:

{
    label: 'APIs',
    kind: QuickPickItemKind.Separator
}

如果您不指定kind屬性,或者將其設定為QuickPickItemKind.Default,則該項將被視為普通的QuickPickItem

您可以在issue #74967中提供有關此 API 的反饋。

值得注意的修復

  • 5989 無法使用 openssh 在遠端 Windows 計算機上執行任何任務
  • 45629 Mac 上的 Google 日語輸入法 (IME) - 建議與文字重疊
  • 131345 預設設定棄用警告與\n破壞了 json
  • 133521 當 nvm 已安裝時卻要求安裝
  • 133623 如果焦點執行緒不再存在,除錯工具欄不會更新
  • 134254 無法輸入韓語。自身分裂或缺失
  • 134429 Zlib 錯誤:距離過遠無效
  • 135838 當有另一個檔名更長的檔案時,無法儲存檔案
  • 136684 呼叫堆疊項未開啟具有正確內容的選項卡
  • 137012 Emmet 在 VS Code 1.62.2 (Universal) 的 js/jsx 檔案中不起作用
  • 138153 效能:_removePropertiesWithPossibleUserInfo 佔加載渲染器成本的約 10%
  • 138302 效能:僅在擴充套件註冊後更新編輯器配置
  • 138517 vscode.dev 無法在私有儲存庫中切換分支

感謝

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

Web 擴充套件

啟用作為Web 擴充套件執行程式碼的擴充套件的擴充套件作者(以下列表介於 11 月 2 日至 12 月 6 日之間)

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-codicons的貢獻

vscode-css-languageservice 的貢獻

vscode-eslint 的貢獻

vscode-extension-samples 的貢獻

vscode-html-languageservice 的貢獻

vscode-json-languageservice 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻