現已釋出!閱讀關於 11 月新增功能和修復的內容。

2021 年 11 月(版本 1.63)

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

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

下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | 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),Webview 中現在支援查詢控制元件

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 儲存庫。

此外,您現在可以透過在 URL 前加上https://vscode.dev,使用舊版 Azure DevOps URL 格式(例如,https://<org>.visualstudio.com)在 vscode.dev 中開啟 Azure Repos 儲存庫。

改進的遠端選單

遠端選單中現在出現了三個額外的命令

  • 關閉遠端工作區 - 將工作區更改為空工作區。
  • 下載 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)

核心故障處理改進

已新增診斷訊息和快速修復,以警告在安裝 Python 包時使用!pip install。快速修復將幫助使用者選擇正確的命令%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 Pull Requests and Issues 擴充套件的工作仍在繼續,它允許您處理、建立和管理拉取請求和問題。檢視擴充套件的 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. 您現在可以根據該提議進行程式設計。

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

Quick Pick API 改進

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

QuickPickItem 內聯按鈕

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

QuickPickItem buttons

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

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

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

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

來自window.createQuickPick()QuickPick物件上的keepScrollPosition屬性允許您控制 Quick Pick 中的滾動位置(cursorTop)是否移回列表頂部。

身份驗證 API 改進

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

強制建立新會話

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

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

在這個例子中,GitHub 身份驗證提供程式不會知道令牌是否已正確 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的型別,不會更改此函式的行為。

更新 vscode.d.ts 以支援 exactOptionalPropertyTypes

我們更新了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)都在單個執行緒上操作,但實現可以決定忽略執行緒引數並在所有執行緒上操作。由於這種模糊的“單執行緒”語義不是很有用,除錯介面卡通常會實現更有用的東西

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

由於當前規範對於執行控制請求不實用,我們更改了所有執行控制請求(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

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

值得注意的修復

  • 5989 無法在遠端 windows 機器上使用 openssh 執行任何任務
  • 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 Perf: _removePropertiesWithPossibleUserInfo 是載入渲染器成本的 ~10%
  • 138302 Perf: 僅在擴充套件註冊後更新編輯器配置
  • 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 的貢獻

© . This site is unofficial and not affiliated with Microsoft.