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

2023 年 2 月 (版本 1.76)

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

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

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


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

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

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

輔助功能

終端命令失敗音訊提示

當帶有 shell 整合的終端中命令以非零程式碼退出時,有視力使用者可以檢視命令裝飾來快速瞭解存在失敗。為了向螢幕閱讀器使用者傳達失敗,VS Code 現在會播放 audioCues.terminalCommandFailed 音訊提示。

您可以透過滾動“幫助:列出音訊提示”下拉選單來收聽可用的音訊提示聲音。

List Audio Cues dropdown with Terminal Command Failed cue selected

改進的錯誤音訊提示響應速度

現在,audioCues.lineHasError 音訊提示會在字元導航期間播放,以便螢幕閱讀器使用者更好地瞭解編輯器中錯誤的位置。

終端可訪問緩衝區改進

上次迭代中,我們引入了終端輔助緩衝區,它透過“終端:聚焦輔助緩衝區”命令為螢幕閱讀器使用者提供了對終端內容的訪問。

本次迭代中,我們透過新增選擇和連結支援,將其設為只讀,並使用 shell 整合洞察將輸出限制為僅重要的終端內容——已執行的命令、退出程式碼(如果有)和輸出,從而改進了輔助緩衝區。我們計劃在下一次迭代中新增此功能的配置。

上下文特定的 Tab 焦點模式

切換 Tab 鍵移動焦點”命令對於確定工作臺或編輯器/終端是否接收 Tab 鍵輸入很有用。

新的 editor.tabFocusMode 設定允許使用者設定預設行為。當值設定為 true 時,工作臺而不是編輯器或終端接收 Tab 鍵輸入。

Windows 上的螢幕閱讀器 shell 整合支援

之前在 Windows 上檢測到螢幕閱讀器時,由於 PowerShell 在此上下文中的支援問題,shell 整合被停用。我們已確定這在大多數情況下不再是問題,因此已將其啟用。

終端輔助幫助新增功能

與螢幕閱讀器社群的討論已促使“終端可訪問性幫助”對話方塊 () 中添加了內容,例如提及“建立新終端(帶配置檔案)”和“首選項:開啟輔助功能設定”命令。

配置檔案

配置檔案,上個里程碑已釋出到穩定版,讓您可以根據當前工作流和專案快速切換 VS Code 配置。您可以儲存一組自定義設定,例如設定、擴充套件和鍵繫結,在您的機器之間同步它們,並輕鬆與同事共享。

配置檔案徽章

VS Code 現在透過在“管理”活動欄圖示上顯示配置檔名稱的前兩個字母作為配置檔案徽章來指示當前自定義配置檔案。

Two profile badges showing the first two letters of the profiles

主題可以透過配置兩個新的主題顏色來自定義配置檔案徽章的背景和前景顏色

  • profileBadge.background
  • profileBadge.foreground

切換配置檔案

您現在可以透過命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中的“配置檔案:切換配置檔案”命令快速切換配置檔案,該命令會顯示一個列出可用配置檔案的下拉選單。

Switch Profile command dropdown listing available profiles

遠端工作區中的配置檔案

您現在可以建立和自定義包含遠端擴充套件的配置檔案,並在遠端開發工作區中切換它們。

下面在兩個例項中,透過遠端 - SSH 激活了兩個不同的配置檔案(“文件編寫”和“程式碼”)。

Profiles active in two Remote - SSH instances

配置檔案文件

如果您想了解有關配置檔案及其有用場景的更多資訊,請查閱新的Visual Studio Code 中的配置檔案主題。本文詳細介紹瞭如何建立、修改、共享和重用配置檔案。

工作臺

可移動的資源管理器檢視

VS Code 中的大多數檢視和檢視容器都是可移動的,除了少數內建檢視。在此版本中,資源管理器檢視容器 (⇧⌘E (Windows, Linux Ctrl+Shift+E)) 現在可移動,可以放置在輔助側邊欄或底部面板中,以允許進一步的工作臺自定義。

下面檔案資源管理器檢視已移動到面板區域。

File Explorer view moved to the panel area

如果您想將所有檢視重置回預設佈局,您可以從命令面板執行“檢視:重置檢視位置”。

固定寬度居中佈局

檢視:切換居中佈局”命令 (workbench.action.toggleCenteredLayout) 現在具有固定寬度佈局選項。此選項透過新的 workbench.editor.centeredLayoutFixedWidth 設定啟用。啟用並激活居中佈局時,編輯器居中並嘗試在視窗和麵板調整大小後保持其寬度。

多個快速差異

隨著提出的多個快速差異 API 的引入,多個擴充套件可以提供快速差異。當一個檔案中存在多個快速差異時,您現在會看到一個下拉選單,以選擇要檢視的差異基礎

Multiple quick diffs and diff base dropdown

評論

評論”檢視新增了“全部展開”命令,與現有的“全部摺疊”命令相輔相成。未解決評論的裝訂線圖示現在與“評論”檢視中使用的圖示相同。

配置預設日誌級別

您現在可以透過“開發者:設定日誌級別...”命令配置 VS Code 或擴充套件的預設日誌級別。此設定在重啟後仍然有效,並在機器之間同步。

Default log level dropdown with several extensions listed

選擇一個擴充套件會顯示與預設日誌級別相同的日誌級別下拉選單。

擴充套件編輯器中的已驗證釋出者域名

擴充套件編輯器現在在已驗證指示器旁邊顯示已驗證的釋出者域名。下面,在已驗證徽章的右側顯示了 prettier.io 域名。

Prettier extension in the extension editor displaying verified publisher domain prettier.io

編輯器

JSONC 文件排序

現在可以透過鍵對 JSONC(帶註釋的 JSON 文件)檔案進行排序。要使用此功能,請從命令面板中選擇“JSON:排序文件”。

用於匹配和著色的獨立括號對

在此次迭代中,我們更改了同時配置 editor.language.bracketseditor.language.colorizedBracketPairs 時的行為。之前,設定 editor.language.colorizedBracketPairs 會覆蓋 editor.language.brackets 用於括號匹配(因為兩者都使用相同的括號對樹)。現在,兩個設定的並集用於括號匹配,但只有在 editor.language.colorizedBracketPairs 中配置的括號才會被著色。

原始碼管理

Git 提交語法高亮

VS Code 採用了新的 Git 語法,為 Git 提交訊息檔案提供語法高亮。新語法對非英語語言提供了更好的支援。

Git 和 GitHub 文件

無論您是原始碼控制的新手還是經驗豐富的 Git 使用者,您都可以在我們文件的原始碼控制部分了解更多關於 VS Code 的 Git 整合。文章包括

Notebook

核心選擇器預設模式:MRU

核心選擇器現在預設顯示最近使用的 (MRU) 核心。這與之前的行為有所不同,之前是顯示所有可用的核心。您仍然可以透過輔助選擇器“選擇另一個核心...”檢視所有核心,當您安裝了最新的JupyterPython 擴充套件時,它會按來源(例如:Jupyter Kernel、Python 環境等)對核心進行分組。

Notebook kernel picker with MRU list and using the Select Another Kernel option

Notebook 渲染器效能診斷

執行 Notebook 單元格時,某些 Notebook 輸出渲染器可能需要很長時間才能渲染。為了幫助識別這些渲染器,我們在 Notebook 單元格狀態列的懸停中添加了診斷資訊。此檢視顯示每個渲染器的執行時間以及總執行時間。此外,懸停中的連結將開啟問題報告器,並預填充渲染器的名稱和執行時間,以便您在發現渲染器執行時間過長時可以輕鬆提交問題。

Image showing the cell Status bar hover with renderer execution times

內建錯誤渲染器現在支援指向檔案和行號的連結。這允許您單擊錯誤訊息中的檔案路徑並在編輯器中開啟檔案。

Jupyter 擴充套件的錯誤渲染器已棄用,取而代之的是內建錯誤渲染器。

Notebook built-in error renderer

語言

需要連結到另一個 Markdown 文件中的標題,但記不住或不想輸入完整的檔案路徑?嘗試使用工作區標題補全!要開始,只需在 Markdown 連結中輸入 ## 即可檢視當前工作區中所有 Markdown 標題的列表

Suggestions for all Markdown headers in the current workspace

接受其中一個補全以插入該標題的完整連結,即使它在另一個檔案中

Adding a link to the selected header in another file

您可以使用“Markdown > 建議 > 路徑:包含工作區標題補全”設定 (markdown.suggest.paths.includeWorkspaceHeaderCompletions) 配置工作區標題補全的顯示方式。

有效設定值為

  • onDoubleHash(預設)- 僅在您鍵入 ## 後顯示工作區標題補全。
  • onSingleOrDoubleHash - 在您鍵入 ### 後顯示工作區標題補全。
  • never - 永不顯示工作區標題補全。

請記住,查詢當前工作區中的所有標題可能開銷很大,因此首次請求時可能會有輕微延遲,特別是對於包含大量 Markdown 檔案的檔案。

新的 markdown.preferredMdPathExtensionStyle 設定配置 VS Code 是否更喜歡為 Markdown 檔案的連結使用副檔名。此首選項用於語言工具,例如路徑補全連結重新命名

有效設定值為

  • auto - 嘗試保留副檔名的現有樣式。
  • includeExtension - 在連結中包含尾部的 .md
  • removeExtension - 從連結中移除尾部的 .md

遠端開發

遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

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

遠端選單

此里程碑我們對遠端選單進行了多項可用性改進,透過單擊狀態列左下角的遠端指示器即可訪問

  1. 現在有一個預設的鍵盤快捷鍵可以開啟遠端選單:⌥⌘O (Windows, Linux Ctrl+Alt+O)

  2. 我們減少了遠端擴充套件對遠端選單的貢獻,以便輕鬆檢視所有連線到遠端視窗的操作。

    • 開啟遠端視窗的基本操作現在始終在遠端選單中可用,因此即使您已經在遠端視窗中,也可以發現連線到另一個遠端視窗的操作。
    • 大多數用於配置或開始遠端操作的動作已從遠端選單移至命令面板,以節省遠端選單中的空間。
  3. 遠端選單中的“安裝其他遠端擴充套件”選項現在指向精選的遠端開發擴充套件列表,如果所有此類擴充套件都已安裝,則從遠端選單中隱藏。

遠端倉庫

此里程碑,我們在遠端儲存庫擴充套件中引入了“無需克隆即可瀏覽和編輯遠端儲存庫”演練,以幫助您在 GitHub 和 Azure Repos 中搜索、編輯和建立快速提交,而無需在本地克隆。

您還可以檢視遠端儲存庫教程以幫助您入門。

Web 版 VS Code

此里程碑,我們為在 GitHub 和 Azure Repos 儲存庫中託管的Git LFS 跟蹤檔案添加了實驗性的只讀支援,適用於vscode.dev

在下面的短影片中,當在 vscode.dev 上滾動 Markdown 預覽時,vscode-docs 儲存庫中儲存在 Git LFS 中的影像是可見的。

當您檢視 GitHub 或 Azure Repos 儲存庫中的檔案時,根據您的 .gitattributes 配置,我們會檢測該檔案是否受 LFS 跟蹤以及是否需要從 GitHub 或 Azure Repos 的 LFS 伺服器獲取。

您還可以將GitHub RepositoriesAzure Repos擴充套件與 VS Code 桌面版一起使用,以瀏覽包含 Git LFS 跟蹤檔案的儲存庫,而無需克隆。

此行為可以透過以下設定停用

  • "githubRepositories.experimental.lfs.read.enabled": false
  • "azureRepos.experimental.lfs.read.enabled": false

VS Code 尚不支援提交 Git LFS 跟蹤檔案,並且github.dev 不支援 Git LFS 讀取。

擴充套件

改進的擴充套件搜尋相關性

我們改進了擴充套件檢視Marketplace 庫中擴充套件搜尋結果的相關性。結果現在應該更準確,特別是對於多詞查詢。

之前 之後
Search results for "mono debugger" showing Java debugger extension as the top result Search results for "mono debugger" showing Mono debug extension as the top result

對擴充套件的貢獻

Jupyter

IPyWidgets

Jupyter 擴充套件現在支援 IPyWidgets 版本 8。依賴 IPyWidgets 7.* 的 Python Widgets 將繼續工作,因為版本 7.*8.* 都受支援。

互動式視窗核心選擇

互動式視窗 (Interactive Window) 的核心自動選擇已修改,以更好地與新的核心選擇器 UI 配合使用。除非之前在該工作區中為互動式視窗選擇了另一個核心,否則使用當前活動直譯器;在這種情況下,使用之前選擇的核心。

Python

改進的 pytest IntelliSense 支援

Pylance 擴充套件現在擁有強大的功能,可以幫助您在使用 pytest 編寫清晰、簡潔且易於理解的測試時更高效、更有效地工作。

  • 支援 pytest fixtures 和引數化引數的自動完成、轉到定義查詢所有引用重新命名符號 (F2)。
  • 透過內聯提示(由 "python.analysis.inlayHints.pytestParameters" 設定啟用)和透過程式碼操作支援 pytest 引數的型別註解。
  • 基於提供給裝飾器的引數值,對引數化 pytest 引數進行型別推斷。

下面的短影片重點介紹了這些新的 pytest 功能

GitHub 拉取請求和議題

GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。亮點包括

  • PR 描述和註釋中的永久連結渲染。
  • 從描述頁面重新請求審查。
  • 已簽出 PR 中檔案的快速差異。

檢視擴充套件 0.60.0 版本的更新日誌以瞭解其他亮點。

預覽功能

全域性搜尋現在支援顯示筆記本中的結果,就像它們在筆記本編輯器中顯示的那樣。啟用 search.experimental.notebookSearch 以試用此功能,並告訴我們您遇到的任何錯誤!這目前僅支援在單元格中搜索單元格輸入和 Markdown 源。

主題:Community Material Theme(在vscode.dev上預覽)

非同步分詞

此版本釋出了實驗性非同步分詞功能。此功能允許編輯器在單獨的 Web Worker 中對文件進行分詞,這可以在文件較大時提高編輯器的響應速度。

目前,非同步分詞預設停用,但可以透過將 editor.experimental.asyncTokenization 設定為 true 來啟用。

TypeScript 5.0 支援

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

  • 新的 switchcase 補全功能可幫助您更快地填寫 switch 語句的兩個部分。
  • 致力於在github.devvscode.dev上啟用專案範圍的 IntelliSense。

要開始使用 TypeScript 5.0 每晚構建,請安裝 TypeScript Nightly 擴充套件或安裝最新的 VS Code 1.76+ Insiders 構建

擴充套件創作

此次迭代,我們引入了對 InputBox 提示和驗證訊息中連結的支援。在這些字串中,您現在可以使用以下語法建立連結

[link text](link target)

連結目標可以是 URL 或命令 ID。當用戶點選連結時,連結目標將分別在瀏覽器中開啟或作為命令執行。

示例

const result = await vscode.window.showInputBox({
  prompt:
    'Please enter a valid email address [more info](https://aka.ms/vscode-email-validation)',
  validateInput: text => {
    if (text.indexOf('@') === -1) {
      return 'Please enter a valid email address, [more info](https://aka.ms/vscode-email-validation)';
    }
    return undefined;
  }
});

這將導致以下提示

Prompt contains a link that is underlined

以及以下驗證訊息

Validation message contains a link that is underlined

主題:熊貓主題(在 vscode.dev 上預覽)

此行為適用於 showInputBoxcreateInputBox API。

“*”啟用事件的資訊診斷

當擴充套件使用 *(星號)啟用事件時,它會在 VS Code 啟動過程中啟用。這可能會延遲 VS Code 的啟動。為了幫助擴充套件作者瞭解使用 * 啟用事件的影響,我們添加了一個資訊診斷,當擴充套件使用 * 啟用事件時會顯示該診斷。診斷顯示在“問題”檢視中,在擴充套件編輯器中也可見。

Diagnostic for * activation event

有關 *(星號)啟用的更多資訊,您可以閱讀啟用事件文件。

when 子句上下文解析的即將更改

擴充套件清單檔案 (package.json) 中使用的when 子句允許擴充套件選擇性地啟用和停用貢獻,例如命令和 UI 元素(例如,選單或檢視)。下一個 VS Code 版本計劃包含一個新的 when 子句解析器。新解析器提供了更多功能和正確性,但它也對 when 子句強制執行更嚴格的規則,並可能導致現有 when 子句出現一些中斷。檢視問題 #175540 以瞭解有關中斷和新功能的更多資訊。還鼓勵您訂閱該問題以獲取有關新解析器的更新,包括新功能、中斷和遷移指南。

即將進行的 Electron 更新可能需要對原生模組進行強制性更改

我們計劃在下一個穩定版本中更新到 Electron 22。由於啟用了 V8 記憶體籠,這會對利用原生模組的擴充套件產生影響:不再允許指向外部(“堆外”)記憶體的 ArrayBuffers。這意味著依賴 V8 中此功能的原生模組需要重構才能在 VS Code 1.77 及更高版本中繼續工作。

請遵循Electron 部落格文章中的建議,瞭解如何使您的原生模組與未來版本的 VS Code 相容。

語言伺服器協議

語言伺服器協議 (LSP) 客戶端 (8.1.0) 和伺服器 (8.1.0) npm 包的新版本已釋出。這些是錯誤修復版本(主要解決使用全文文件同步時的請求排序問題),並且包含用於自定義訊息處理的 API 新增到 JSON-RPC 庫。

提議的 API

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

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

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

OpenDialogOptions allowUIResources

瞭解其在遠端擴充套件主機中執行的擴充套件可以使用 allowUIResources 使“顯示本地”按鈕顯示在開啟檔案對話方塊中。使用 allowUIResources 的擴充套件應始終檢查返回 URI 的方案。

QuickPickItem 的工具提示

本次迭代中,我們為 QuickPickItem 引入了一個新的提議 API,用於 tooltip 屬性。此屬性允許您為 Quick Pick 中的每個專案指定一個工具提示。當用戶將滑鼠懸停在專案上時,或透過 Ctrl+Space 切換時,將顯示工具提示。

示例

await vscode.window.showQuickPick(
  [
    {
      label: 'label',
      tooltip: 'tooltip'
    },
    {
      label: 'label2',
      tooltip: new vscode.MarkdownString('tooltip2 [link](https://github.com)')
    }
  ],
  {
    placeHolder: 'placeholder'
  }
);

這將導致以下快速選擇

主題:熊貓主題(在 vscode.dev 上預覽)

顯然,這是一個不需要工具提示的簡單示例。當您想提供可能包含多行或指向其他資源的冗長描述時,工具提示會很有用。

我們認為此屬性是 Quick Pick API 的一個很好的補充,我們期待您的反饋。

工程

更多 Electron UtilityProcess 採用

作為我們程序沙盒之旅的一部分,我們希望確保我們的應用程式中不再有啟用 Node.js 的瀏覽器視窗。在此里程碑,我們開始將我們最後一個剩餘的程序從隱藏的 Node.js 瀏覽器視窗轉換為 Electron UtilityProcess。作為這項工作的一部分,檔案監視程序也必須移到它自己的實用程式程序中。

新的設定 window.experimental.sharedProcessUseUtilityProcess 啟用了 UtilityProcess 的使用,我們計劃在下一個版本中將其設為預設設定。

macOS 10.11 和 10.12 支援已終止

正如我們在1.75 發行說明中提到的,1.76 是最後一個支援 macOS 10.11 (OS X El Capitan) 和 10.12 (macOS Sierra) 的版本。請參閱我們的常見問題以獲取更多資訊。

值得注意的修復

  • 168939 在重新載入和檢視移動時保持徽章隱藏狀態。
  • 164397 macOS RTL 佈局控制位置錯誤。

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

monaco-editor 的貢獻