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

2024 年 5 月 (版本 1.90)

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

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

下載:Windows:x64 Arm64 | Mac:Universal Intel silicon | Linux:deb rpm tarball Arm snap


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

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。

輔助功能

從輔助功能幫助對話方塊設定按鍵繫結

輔助功能幫助對話方塊為您提供特定功能或檢視的重要命令的概覽。當命令缺少按鍵繫結分配時,您現在可以透過輔助功能幫助對話方塊中的 ⌥K(Windows、Linux Alt+K 進行配置。

實驗性:訊號延遲設定

當啟用 防抖位置更改 設定時,您可以使用 訊號選項延遲 設定來自定義各種輔助功能訊號的防抖時間。

工作臺

編輯器選項卡多選

現在可以同時選擇多個選項卡,從而一次性對多個編輯器應用操作。此新功能使您可以透過單個操作移動、固定或關閉多個選項卡。要將另一個選項卡新增到您的選擇中,請使用 Ctrl + Click(macOS 上為 Cmd + Click)。要選擇一個選項卡範圍,請使用 Shift + Click

始終顯示編輯器操作

我們引入了 始終顯示編輯器操作 設定。啟用此設定後,每個編輯器組的編輯器標題操作將始終顯示,無論編輯器是否處於活動狀態。

當未啟用該設定時(預設值),編輯器操作僅在編輯器處於活動狀態時顯示。

Editor Actions of each group when the setting is disabled

如果啟用該設定,編輯器操作將始終可用,即使編輯器不處於活動狀態。

Editor Actions of each group when the setting is enabled

將 disable-lcd-text 設定為執行時引數

使用 disable-lcd-text,您可以停用 Windows 上的 RGB 子畫素渲染。disable-lcd-text 設定現在受 argv.json 檔案中執行時引數的支援。以前,它僅作為未公開的 CLI 標誌可用。使用 **首選項:配置執行時引數** 命令來配置執行時引數。

在下面的影像中,您可以看到並排比較,左側 disable-lcd-texttrue,右側為 false

Comparison showing that disable-lcd-text disables RGB subpixel rendering

主題:淺粉色(在 vscode.dev 上預覽)

為新視窗配置自定義配置檔案

以前,當您開啟新的 VS Code 視窗時,它會使用活動視窗的 配置檔案,如果不存在活動視窗,則使用預設配置檔案。現在,您可以透過配置 window.newWindowProfile 設定來指定開啟新視窗時應使用的配置檔案。

Configure custom profile for new window

原始碼管理

焦點輸入/資源組命令

在此版本中,我們添加了幾個工作臺命令,以便您可以為它們建立鍵盤快捷鍵。

  • 聚焦到下一個或上一個原始碼管理輸入欄位:workbench.scm.action.focusNextInputworkbench.scm.action.focusPreviousInput
  • 聚焦到儲存庫內下一個或上一個資源組:workbench.scm.action.focusNextResourceGroupworkbench.scm.action.focusPreviousResourceGroup

Notebook

在單元格選擇中查詢

在筆記本中,您現在可以使用“查詢”控制元件在選定單元格的特定範圍內進行搜尋。

notebook.experimental.find.scope.enabled 設定為 true 後,“在單元格選擇中查詢”切換將可用於“查詢”控制元件。然後,您可以選擇一個單元格範圍,然後開啟“查詢”控制元件,或者如果它已開啟,則選擇“在單元格選擇中查詢”按鈕。

筆記本格式化程式碼操作

筆記本現在支援一種新的程式碼操作,該操作由 notebook.format 程式碼操作種類字首定義。這些程式碼操作可以透過顯式格式化請求(使用命令 **筆記本:格式化筆記本**)或儲存時格式化請求自動觸發。

它們可用於透過使用工作區編輯和筆記本編輯提供更強大的格式化。要開始使用,請檢視 vscode-extension-samples 倉庫中的示例擴充套件。

終端

⚠️ 移除 Canvas 渲染器

Canvas 渲染器在 VS Code 1.89 版本中已被棄用,現在已完全移除。這意味著在不支援 WebGL2 的少數機器上,終端現在使用基於 DOM 的渲染器。您可以在 終端文件 中瞭解有關 GPU 加速的更多資訊。

重新縮放終端中的重疊字形

在 VS Code 1.88 版本中作為預覽功能引入的 terminal.integrated.rescaleOverlappingGlyphs 設定現已預設啟用。此功能會重新縮放跟隨單元格的重疊字形,這些單元格旨在覆蓋寬度不確定的字元,並且其字型字形可能與後端 pty/Unicode 版本認為的字形不匹配。

例如,在大多數字體中,羅馬數字 Unicode 字元(U+2160+)通常會佔用多個單元格,因此在此設定啟用時,它們會水平重新縮放。

無重縮放

Before the glyphs for Ⅷ and Ⅻ depending on the font would always overlap the following cells

已重縮放

After the glyphs for Ⅷ and Ⅻ depending on the font are rescaled horizontally to fit a single cell

對擴充套件的貢獻

GitHub Copilot

將上下文附加到聊天

為了使您的聊天提示更具體,您可以將上下文新增到您的聊天訊息中。現在,您可以將更多型別的上下文附加到聊天訊息,例如工作區符號。以前,您使用 '#' 符號引用檔案或當前選定內容。現在,您可以透過選擇聊天檢視輸入欄位中的 📎 圖示,或鍵入 ⌘/(Windows、Linux Ctrl+/ 來將上下文附加到聊天訊息。

提示:使用右箭頭鍵在後臺快速附加上下文,同時保持上下文選擇器開啟。在編輯器中時,您還可以右鍵單擊選定內容並選擇 **Copilot > 將選定內容新增到聊天**。

使用 Bing 搜尋和企業知識庫提問

VS Code 中的 GitHub Copilot Enterprise 使用者現在可以提出從網路結果和您的企業 知識庫 中豐富了上下文的問題。要嘗試此功能,請安裝最新版本的 Copilot Chat 預釋出版本。

在聊天檢視中,您可以問類似 @github Node.js 的最新 LTS 版本是什麼? #web 這樣的問題,以利用網路搜尋。Copilot 引用的任何搜尋結果都顯示在聊天響應的 使用的引用 部分。

Web search results in Copilot Chat

您還可以直接從 VS Code 詢問有關您企業知識庫的問題,這些知識庫是包含文件的 Markdown 倉庫集合。只需鍵入 @github #kb 即可從您可用的知識庫中進行選擇。同樣,Copilot 引用的任何知識庫片段都顯示在聊天響應的 使用的引用 部分。

這使 Copilot Enterprise 使用者能夠透過使用現有的聊天變數(如 #file#selection)將搜尋結果和內部文件與編輯器上下文結合起來。請試用並與我們分享您的反饋,網址為 https://github.com/microsoft/vscode/issues

聊天程式碼塊中的 IntelliSense

我們現在支援 Copilot 生成的程式碼塊中的基本 IntelliSense。這使您可以使用許多與在編輯器中使用的相同的 IntelliSense 工具,並有助於您更好地理解生成的程式碼。

Hover IntelliSense in Copilot chat code block

支援的 IntelliSense 功能包括:

  • 使用 Ctrl Click / Cmd ClickF12 轉到定義
  • 懸停資訊
  • 轉到實現
  • 轉到型別定義

IntelliSense 甚至可以與 @workspace 一起使用,以瞭解 Copilot 響應中使用的任何工作區符號。

TypeScript、JavaScript、HTML 和 CSS 程式碼塊的 IntelliSense 開箱即用。對於額外的語言支援,請嘗試安裝該語言的擴充套件,但並非所有語言擴充套件都已支援程式碼塊 IntelliSense。請為尚未支援此功能的語言提交功能請求。

我們透過新增檔名和符號連結來改進聊天響應。透過單擊這些連結,您可以導航到編輯器中相應的檔案或符號。

Clickable links for symbols used with /explain

Clickable file and symbol links for an @workspace question

在內聯聊天和聊天檢視之間漫遊活動聊天

您現在可以將已完成或仍在進行的聊天請求從內聯聊天移動到聊天檢視。您可以使用此功能來清理內聯聊天並將對話移至更持久的位置。要移動請求,請單擊聊天輸入框旁邊的聊天圖示。

Move a chat conversation from inline chat to the Chat view

自動重新命名建議

如果您使用 Copilot Chat 擴充套件,現在當您重新命名符號時,Copilot 驅動的重新命名建議會自動觸發。您可以透過使用 github.copilot.renameSuggestions.triggerAutomatically 設定來停用此功能。

Python

測試修復

在使用 Python 測試重寫時,pytest 的體驗得到了改進,為設定 pytest 的 cwd(當它與 VS Code 工作區根目錄相鄰時)以及在函式名跨類重複時在測試資源管理器中顯示引數化測試提供了更好的支援。

此外,我們透過將系統配置指令碼路徑新增到 PATH 來支援 shell 進行測試執行,從而減少了一些測試發現失敗的情況。

實驗性:支援 IntelliSense 和語法高亮的 Python 原生 REPL

您現在可以在類似編輯器的 REPL 環境中執行 Python 程式碼,該環境配備了 IntelliSense 和語法高亮等功能,以提高與 REPL 的互動效率。要啟用此功能,請在 settings.json 檔案中設定 "python.REPL.sendToNativeREPL": true。這將透過 Shift+Enter 和 **執行選定行/當前行** 在 Python 原生 REPL 中執行程式碼。

您可以透過在 settings.json 中設定 "python.REPL.sendToNativeREPL": false 來選擇使用終端中的 Python REPL ( >>> )。此外,如果您在 settings.json 中新增設定 "interactiveWindow.executeWithShiftEnter": false,Python 原生 REPL 將像 Python 的原始互動式直譯器一樣智慧地在 Enter 上執行。

GitHub 拉取請求和議題

GitHub Pull Requests 擴充套件方面也取得了更多進展,該擴充套件使您能夠處理、建立和管理拉取請求和問題。請檢視該擴充套件的 0.90.0 版本的 變更日誌,以瞭解其他亮點。

VS Code Speech

我們為 VS Code Speech 擴充套件添加了文字轉語音功能。可以啟用新的 accessibility.voice.autoSynthesize 設定,以便在語音也用作輸入時自動朗讀 Copilot 聊天響應。

請注意輸入欄位中的麥克風圖示如何變化,表明文字正在被朗讀。要中斷合成,請選擇該圖示或按 Escape

每個聊天響應還顯示一個新的揚聲器圖示,以便您可以選擇性地朗讀響應。

Text to Speech for a Chat Response

您可以透過現有的 accessibility.voice.speechLanguage 設定更改用於文字轉語音的語言。

預覽功能

VS Code 原生的 PowerShell IntelliSense

除了幾項可靠性改進外,我們還對終端中的 PowerShell IntelliSense 進行了以下更改:

  • terminal.integrated.shellIntegration.suggestEnabled 已更改為 terminal.integrated.suggest.enabled
  • 新的 terminal.integrated.suggest.quickSuggestions 控制在輸入空格後是否顯示建議。
  • 新的 terminal.integrated.suggest.suggestOnTriggerCharacters 控制在輸入 /\- 時是否顯示建議。

TypeScript 5.5

我們繼續改進對即將釋出的 TypeScript 5.5 版本的支援。有關此版本的詳細資訊,請檢視 TypeScript 5.5 Beta 部落格文章迭代計劃

要開始使用 TypeScript 5.5 Beta,請安裝 TypeScript Nightly 擴充套件。請分享您的反饋,如果您遇到 TypeScript 5.5 的任何錯誤,請告知我們。

Web 版問題報告器

我們改進了 VS Code for Web 的問題報告流程,使其與桌面版使用者目前使用的功能相匹配。選擇 **幫助:報告問題** 會在新視窗中開啟問題報告頁面,使用者可以在其中選擇錯誤型別、來源以及擴充套件(如果需要)。擴充套件資訊、系統資訊等會自動附加到 GitHub 中建立的問題上。

此功能在本次釋出中預設停用,但請透過啟用 issueReporter.experimental.webReporter 設定來分享您的反饋。

擴充套件創作

對擴充套件使用 esbuild

yo code 擴充套件生成器中的 TypeScriptWeb 現在有一個選項,可以使用 esbuild 作為打包器。當您選擇 esbuild 時,它會建立一個 esbuild.js 構建指令碼,並在 package.json 中新增指令碼條目,在 .vscode/tasks.json 中新增構建任務。

要在現有擴充套件中使用 esbuild,請檢視 打包擴充套件Web 擴充套件指南。

您可以在 vscode-extension-samples/esbuild-sample 找到示例專案。

聊天和語言模型 API

我們已完成 API,使擴充套件能夠參與聊天並訪問語言模型。有關更多資訊,請參閱 擴充套件示例聊天擴充套件文件頁面,或觀看我們在 Microsoft Build 會議上發表的關於 **使用 GitHub Copilot 增強 VS Code 擴充套件** 的演講

重要:這些 API 已最終確定,但目前僅在 VS Code Insiders 中可用。

聊天參與者

聊天參與者 API 使擴充套件能夠透過在聊天輸入欄位中使用 @ 呼叫的聊天參與者來擴充套件 GitHub Copilot Chat。該參與者可以使用 markdown、檔案樹、執行 VS Code 命令的按鈕或其他型別的內容回覆使用者請求。

Chat Participant example in the Chat view

語言模型

語言模型 API 使您可以訪問 Copilot 的聊天模型,如 gpt-3.5 和 gpt-4。此 API 可用於聊天參與者,也可用於豐富其他功能。該 API 基於 LanguageModelChat 物件構建,這些物件用於聊天請求和計算 token。

訪問聊天物件的唯一方法是 vscode.lm.selectChatModels 函式。該函式接受一個選擇器來縮小聊天模型的不同屬性,例如按供應商、系列、版本或識別符號。值是相對自由的,必須在提供它們的擴充套件的文件中查詢。今天,只有 Copilot Chat 擴充套件貢獻了聊天模型。它使用 copilot 供應商,當前系列是 gpt-3.5-turbogpt-4,但可能會發生變化。

程式碼片段顯示瞭如何從 copilot 供應商選擇所有聊天模型。

const models = await vscode.lm.selectChatModels({
  vendor: 'copilot'
});

if (models.length === 0) {
  // no models available
  return;
}

在呼叫 selectChatModels 時,有兩點非常重要

  1. 如果沒有任何可用模型,該函式將返回一個陣列,擴充套件必須處理這種情況。
  2. Copilot 的聊天模型在擴充套件使用它們之前需要使用者同意。同意是透過身份驗證對話方塊實現的。因此,selectChatModels 應作為使用者發起的動作(如命令)的一部分呼叫,而不是“憑空”呼叫。

有了聊天物件,擴充套件現在就可以使用它來發送聊天請求。下面的程式碼片段展示瞭如何傳送聊天請求並處理響應流。

// take the first model and say "Hello"
const [chat] = models;
const messages = [vscode.LanguageModelChatMessage.User('Hello')];
const response = await chat.sendRequest(messages);

// the response is always an async iterable that can be consumed with for-await
for await (const part of response.text) {
  console.log(part);
}

這是語言模型 API 的要點。有關更完整的示例,請參閱 擴充套件示例。敬請關注更多示例、文件和 API 的進一步擴充套件。

VS Code 的 Java 擴充套件已在使用語言模型 API 為您的 Java 程式碼提供基於 Copilot 的重寫功能。在此 2024 年 5 月 Visual Studio Code Java 更新部落格文章中瞭解有關這些更新的更多資訊。

@vscode/prompt-tsx

為了幫助開發 VS Code 的 GitHub Copilot 擴充套件,我們開發併發布了一個基於 TSX 的庫,用於聲明覆雜提示並將它們轉換為聊天訊息,受限於您的 LLM 的上下文視窗限制。在此開發過程中,我們從 Anysphere 的 priompt 庫中獲得了啟發。如果您是計劃使用聊天和語言模型 API 的擴充套件作者,請考慮嘗試此庫的最新 alpha 版本:@vscode/prompt-tsx

透過 GitHub 應用擴充套件 GitHub Copilot

也可以透過貢獻 GitHub 應用來擴充套件 GitHub Copilot。此 GitHub 應用可以在聊天檢視中貢獻一個聊天參與者,您可以透過 @ 呼叫它。GitHub 應用由服務支援,並在所有 GitHub Copilot 表面(如 github.com、Visual Studio 或 VS Code)上執行。GitHub 應用沒有對 VS Code API 的完全訪問許可權。要透過 GitHub 應用擴充套件 GitHub Copilot,您應加入 Copilot 合作伙伴計劃。您可以透過觀看我們在 Microsoft Build 會議上發表的 **擴充套件 GitHub Copilot** 的演講 來了解更多資訊

除錯堆疊焦點 API

VS Code 現在透過一個新 API 公開除錯檢視中關注的堆疊幀和執行緒。vscode.debug.activeStackItem 用於檢索當前關注的堆疊項(執行緒或堆疊幀),而 vscode.debug.onDidChangeActiveStackItem 是一個在發生更改時觸發的事件。

這對於擴充套件 VS Code 除錯功能(如使用 DebugAdapterTracker 的 API)非常有用。瞭解有關建立 偵錯程式擴充套件 的更多資訊。

TestRunRequest.preserveFocus API

以前,由擴充套件觸發的測試執行永遠不會像 UI 啟動的執行那樣將焦點移到“測試結果”檢視中。現在可以透過建立 TestRunRequest 時設定的 preserveFocus 標誌來配置此行為。為保持向後相容性,此標誌預設為 true

提議的 API

可歸因測試覆蓋率

我們正在開發一項 API,該 API 允許按每個測試歸因測試覆蓋率。這使使用者可以看到哪些測試運行了哪些程式碼,從而過濾編輯器中顯示的內容以及“測試覆蓋率”檢視中的內容。請檢視 vscode#212196 以獲取更多資訊和更新。

懸停詳細程度級別

上個版本,我們提出了一個新的 API,用於提供可以增加或減少詳細程度的懸停。在此版本中,API 已更改,因此 HoverVerbosityRequest 使用 verbosityDelta 來指示懸停詳細程度級別的相對增加或減少。以前,HoverVerbosityRequest 使用列舉 HoverVerbosityAction 來指示詳細程度是應增加還是減少。

工程

跟蹤啟動時的記憶體效率

我們每天都會在 Windows、macOS 和 Linux 上測量 VS Code Insiders 的啟動效能。我們的主要關注點是啟動速度,直到開啟一個文字檔案為止。

本月,我們添加了另一個計劃改進以使啟動速度更快:我們消耗了多少記憶體,以及其中有多少記憶體最終被 V8 垃圾回收。如果我們能降低這個數字,啟動時間將不太受 V8 垃圾回收執行的影響。

Memory consumption statistics for VS Code

Electron 29 更新

在此版本中,我們將 Electron 29 更新推廣給穩定版本使用者。此更新附帶 Chromium 122.0.6261.156 和 Node.js 20.9.0。我們想感謝所有在 Insiders 構建上進行自我託管並提供早期反饋的人。

值得注意的修復

  • 212386 本地歷史記錄:不保留之前刪除檔案的條目
  • 213645 輔助視窗在 Firefox 中不起作用
  • vscode-js-debug#2000/2002 JavaScript 偵錯程式速度更快,尤其是在處理源對映重新命名時。

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-eslint 的貢獻

vscode-extension-samples 的貢獻

vscode-generator-code 的貢獻

vscode-hexeditor 的貢獻

vscode-languageserver-node 的貢獻

vscode-mypy 的貢獻

vscode-remote-try-dotnet 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

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