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

2025 年 2 月 (版本 1.98)

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

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

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


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

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

GitHub Copilot

Copilot 功能可能會經歷不同的早期訪問階段,通常透過設定啟用和配置。

階段 描述
實驗性 該功能仍在開發中,尚未準備好供一般使用。
檢視實驗性功能 (@tag:experimental)。
預覽 該功能仍在完善中,但已可使用。歡迎提供反饋。
檢視預覽功能 (@tag:preview)。
穩定版 該功能已準備好供一般使用。

Copilot 編輯

代理模式改進(實驗性)

上個月,我們在 VS Code Insiders 中為 Copilot Edits 引入了代理模式。在代理模式下,Copilot 可以自動搜尋您的工作區以獲取相關上下文、編輯檔案、檢查錯誤並執行終端命令(經您許可)以端到端地完成任務。

注意:代理模式目前在 VS Code Insiders 中可用,我們剛剛開始在 VS Code Stable 中逐步推出。一旦為您啟用了代理模式,您將在 Copilot Edits 檢視中看到一個模式下拉選單 — 只需選擇代理

本月我們對工具使用的使用者體驗進行了一些改進:

  • 終端命令現在以內聯方式顯示,因此您可以跟蹤運行了哪些命令。
  • 您可以在執行之前編輯聊天回覆中建議的終端命令。
  • 使用快捷鍵⌘Enter (Windows、Linux Ctrl+Enter)確認終端命令。

代理模式會自主搜尋您的程式碼庫以獲取相關上下文。展開訊息以檢視已完成搜尋的結果。

Screenshot that shows the expandable list of search results in Copilot Edits.

我們還對代理模式的提示和行為進行了各種改進:

  • 聊天中的撤消和重做操作現在會撤消或重做聊天回覆中進行的上次檔案編輯。這對於代理模式非常有用,因為您現在可以撤消模型所採取的某些步驟,而無需回滾整個聊天回覆。
  • 代理模式現在可以自動執行您的構建任務,或者在收到指令時執行。如果您發現模型在不應該執行任務時執行任務,可以透過 github.copilot.chat.agent.runTasks 設定停用此功能。

詳細瞭解Copilot 編輯代理模式或閱讀代理模式釋出部落格文章

注意:如果您是 Copilot Business 或 Enterprise 使用者,您的組織管理員必須選擇啟用 Copilot“編輯器預覽功能”才能使用代理模式。

Copilot Edits 中的筆記本支援(預覽)

我們正在 VS Code Insiders 中作為預覽功能引入 Copilot Edits 的筆記本支援。您現在可以使用 Copilot 編輯筆記本檔案,其體驗與編輯程式碼檔案一樣直觀。從頭開始建立新筆記本,修改多個單元格中的內容,插入和刪除單元格,以及更改單元格型別。此預覽功能在處理資料科學或文件筆記本時提供了無縫的工作流程。

注意:此功能目前僅在安裝了 GitHub Copilot Chat 預釋出版本的 VS Code Insiders 中可用。我們將在未來的版本中將其引入 VS Code Stable 之前繼續改進體驗。

更精細的編輯器整合

我們優化了 Copilot Edits 與程式碼和筆記本編輯器的整合:

  • 應用更改時不再滾動。視口保持原位,更容易專注於更改內容。
  • 將編輯評審操作從“接受”重新命名為“保留”,將“丟棄”重新命名為“撤消”,以更好地反映實際發生的情況。Copilot Edits 的更改是即時的,它們在進行時即應用並儲存,使用者可以選擇保留或撤消它們。
  • 保留或撤消檔案後,會自動顯示下一個檔案。

此影片演示了編輯如何即時應用和儲存。即時預覽會更新,使用者決定“保留”更改。撤消和進一步調整也仍然可能。

更新後的使用者介面

為統一 Copilot Edits 和 Copilot Chat 做準備,我們對 Copilot Edits 進行了改版。已附加但尚未傳送的檔案現在顯示為常規聊天附件。只有經過 AI 修改的檔案才會新增到更改檔案列表,該列表位於聊天輸入部分上方。

使用 chat.renderRelatedFiles 設定,您可以啟用獲取相關檔案建議。相關檔案建議顯示在聊天附件下方。

Screenshot that shows the updated Copilot Edits attachments and changed files user experience.

移除 Copilot Edits 限制

以前,您在 Copilot Edits 中只能將 10 個檔案附加到提示中。此版本中,我們取消了此限制。此外,我們還取消了每 10 分鐘 14 次互動的客戶端速率限制。

請注意,服務端使用速率限制仍然適用。

自定義指令全面可用

設定github.copilot.chat.codeGeneration.useInstructionFiles

自定義指令使您能夠根據您和團隊的工作方式調整 GitHub Copilot,以提供聊天回覆和程式碼建議。在工作區的 .github/copilot-instructions.md 檔案中以 Markdown 格式描述您的具體要求。

在這個里程碑中,我們使帶有 .github/copilot-instructions.md 的自定義指令全面可用。確保啟用了 github.copilot.chat.codeGeneration.useInstructionFiles VS Code 設定,Copilot 在生成回覆時將使用這些指令。

瞭解有關Copilot 中自定義指令的更多資訊。

更流暢的聊天認證流程

如果您的原始碼託管在 GitHub 倉庫中,您可以使用多項功能,包括高階程式碼搜尋、@github 聊天參與者等!

但是,對於私有 GitHub 倉庫,VS Code 需要獲得許可權才能與您的 GitHub 倉庫進行互動。一段時間以來,這透過我們通常的 VS Code 身份驗證流程呈現,當您呼叫某些功能時(例如,詢問 @workspace@github 問題,或使用 #codebase 工具)會彈出一個模態對話方塊。

為了使此體驗更流暢,我們引入了聊天中的此確認:

Screenshot that shows the authentication confirmation dialog in Chat, showing the three options to continue.

它不僅不像模態對話方塊那樣令人不適,而且還具有新功能:

  1. 授予: 您將像以前一樣(透過模態框)經歷常規的身份驗證流程。
  2. 稍後: VS Code 會記住您的選擇,並且在您下次 VS Code 視窗會話之前不會再次打擾您。唯一的例外是如果該功能需要此額外許可權才能執行,例如 @github
  3. 不再詢問: VS Code 會記住您的選擇並透過 github.copilot.advanced.authPermissions 設定將其持久化。任何需要此額外許可權的功能都將失敗。

需要注意的是,此確認不會確認或拒絕 Copilot(服務)訪問您的倉庫。這只是 VS Code 的 Copilot 體驗進行身份驗證的方式。要配置 Copilot 可以訪問的內容,請閱讀有關內容排除的文件。

Copilot Chat 中更高階的程式碼庫搜尋

設定github.copilot.chat.codesearch.enabled

當您在 Copilot Chat 查詢中新增 #codebase 時,Copilot 會幫助您在工作區中為您的聊天提示找到相關程式碼。#codebase 現在可以執行文字搜尋和檔案搜尋等工具,以從您的工作區中獲取更多上下文。

github.copilot.chat.codesearch.enabled 設定為啟用此行為。工具的完整列表如下:

  • 基於嵌入的語義搜尋
  • 文字搜尋
  • 檔案搜尋
  • Git 修改檔案
  • 專案結構
  • 讀取檔案
  • 讀取目錄
  • 工作區符號搜尋

將問題作為聊天上下文附加

為了幫助解決工作區中的程式碼或其他問題,您現在可以將“問題”面板中的問題作為提示的上下文附加到聊天中。

您可以將“問題”面板中的專案拖放到“聊天”檢視中,或者在提示中鍵入 #problems,或者選擇回形針 📎 按鈕。您可以附加特定問題、檔案中所有問題或程式碼庫中所有檔案。

將資料夾作為上下文附加

以前,您可以透過從資源管理器檢視中拖放來附加資料夾作為上下文。現在,您還可以透過選擇回形針 📎 圖示或在聊天提示中鍵入 #folder: 後跟資料夾名稱來附加資料夾。

下一編輯建議的摺疊模式(預覽)

設定:

我們為 NES 添加了摺疊模式。啟用此模式後,僅在左側編輯器邊距中顯示 NES 建議指示器。程式碼建議本身僅在您按 Tab 導航到它時才顯示。在接受建議之前,會立即顯示連續的建議。

摺疊模式預設停用,可以透過配置 editor.inlineSuggest.edits.showCollapsed 啟用,或者您可以在 NES 邊欄指示器選單中啟用或停用它。

Screenshot that shows the Next Edit Suggestions context menu in the editor left margin, highlighting the Show Collapsed option.

更改完成模型

您已經可以更改 Copilot Chat 和 Copilot Edits 的語言模型,現在您也可以更改內聯建議的模型。

或者,您可以透過命令面板中的更改完成模型命令或標題欄中 Copilot 選單中的配置程式碼完成項來更改用於程式碼完成的模型。

注意: 可用模型的列表可能會有所不同並隨時間變化。如果您是 Copilot Business 或 Enterprise 使用者,您的管理員需要在 GitHub.com 上的Copilot 策略設定中選擇啟用編輯器預覽功能,以便為您的組織啟用某些模型。

模型可用性

此版本中,我們添加了更多 Copilot 模型供您選擇。以下模型現在在 Visual Studio Code 和 github.com 聊天中的模型選擇器中可用:

  • GPT 4.5(預覽):OpenAI 的最新模型 GPT-4.5 現已向 Copilot Enterprise 使用者在 GitHub Copilot Chat 中提供。GPT-4.5 是一個大型語言模型,在直覺、寫作風格和廣泛知識方面具有高階功能。在GitHub 部落格文章中瞭解有關 GPT-4.5 模型可用性的更多資訊。

  • Claude 3.7 Sonnet(預覽):Claude 3.7 Sonnet 現已向所有付費 Copilot 計劃客戶提供。這個新的 Sonnet 模型支援 Copilot 中的思考和非思考模式。在初步測試中,我們發現代理場景有特別顯著的改進。在GitHub 部落格文章中瞭解有關 Claude 3.7 Sonnet 模型可用性的更多資訊。

Copilot Vision(預覽)

我們正在此版本的 Copilot Chat 中快速推出端到端視覺支援。這使您可以在聊天提示中附加影像並與之互動。例如,如果您在除錯時遇到錯誤,可以附加 VS Code 的螢幕截圖,並請求 Copilot 幫助您解決問題。您還可以使用它來附加一些 UI 樣機,並讓 Copilot 提供一些 HTML 和 CSS 來實現該樣機。

Animation that shows an attached image in a Copilot Chat prompt. Hovering over the image shows a preview of it.

您可以透過多種方式附加影像:

  • 從您的作業系統或檔案資源管理器檢視中拖放影像
  • 從剪貼簿貼上影像
  • 附加 VS Code 視窗的螢幕截圖(選擇回形針 📎 按鈕 > 截圖視窗

如果選定的模型目前不具備處理檔案型別的功能,將顯示警告。目前唯一支援的模型將是 GPT 4o,但對 Claude 3.5 SonnetGemini 2.0 Flash 的影像附件支援也將很快推出。目前支援的影像型別是 JPEG/JPGPNGGIFWEBP

Copilot 狀態概覽(實驗性)

設定chat.experimental.statusIndicator.enabled

我們正在試驗一個新的集中式 Copilot 狀態概覽,它提供您的 Copilot 狀態和關鍵編輯器設定的快速概覽:

  • 如果您是 Copilot 免費使用者,則顯示配額資訊
  • 編輯器相關設定,例如程式碼完成
  • 使用其他 Copilot 功能的有用鍵盤快捷鍵

此 Copilot 狀態概覽可透過狀態列中的 Copilot 圖示訪問。

Screenshot that shows the Copilot status overview in the Status Bar.

使用 chat.experimental.statusIndicator.enabled 設定啟用 Copilot 狀態概覽。

內聯完成的 TypeScript 上下文(實驗性)

設定chat.languageContext.typescript.enabled

我們正在試驗 TypeScript 檔案的內聯完成和 /fix 命令的增強上下文。該實驗目前僅限於 Insider 版本,並且可以透過 chat.languageContext.typescript.enabled 設定啟用。

拉取請求標題和描述的自定義指令

您可以使用設定 github.copilot.chat.pullRequestDescriptionGeneration.instructions 為生成拉取請求標題和描述提供自定義指令。您可以將設定指向工作區中的檔案,也可以在設定中內聯提供指令。獲取有關在 VS Code 中自定義 Copilot 的更多詳細資訊。

以下示例展示瞭如何在設定中內聯提供自定義指令。

{
  "github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
    {
      "text": "Prefix every PR title with an emoji."
    }
  ]
}

生成標題和描述需要安裝 GitHub 拉取請求擴充套件。

輔助功能

Copilot Edits 可訪問性

我們使 Copilot Edits 更易於訪問。

  • 現在有針對修改檔案和更改區域(插入、修改和刪除)的音訊訊號。
  • 現在,可用於修改檔案的可訪問差異檢視器。就像在差異編輯器中一樣,選擇 F7 以啟用它。

activeEditorState 視窗標題變數

我們有一個新的 window.title 變數,activeEditorState,用於向螢幕閱讀器使用者指示編輯器資訊,例如修改狀態、問題數量以及檔案何時有待處理的 Copilot 編輯。在螢幕閱讀器最佳化模式下,預設會附加此變數,並且可以透過 accessibility.windowTitleOptimized 停用。

工作臺

Linux 上的自定義標題欄

自定義標題欄現在在 Linux 上預設啟用。自定義標題欄使您可以訪問佈局控制元件、Copilot 選單等。

Screenshot that shows the custom VS Code title bar on Linux.

您可以隨時恢復到本機標題裝飾,無論是從自定義標題上下文選單中,還是透過將 window.titleBarStyle 配置為 native

Screenshot that shows the content menu option to disable the custom title bar on Linux.

我們很高興能繼續收到關於此體驗的反饋,並且已經根據現有反饋努力改進未來的里程碑。

使用標籤表示輔助側邊欄檢視

我們決定更改輔助側邊欄中檢視的顯示方式,以顯示標籤而不是圖示,類似於面板區域中的做法。這使得區分不同的檢視(例如Copilot EditsCopilot Chat檢視)變得更容易。您可以隨時透過配置workbench.secondarySideBar.showLabels切換回顯示圖示。

Screenshot that shows Secondary Side Bar with labels instead of icons.

新的設定編輯器鍵匹配演算法(預覽)

設定workbench.settings.useWeightedKeySearch

我們添加了一個新的“設定”編輯器搜尋演算法,該演算法優先考慮更相關的鍵匹配。該搜尋演算法嘗試以比以前更多的方式匹配設定 ID 和標籤,但它也更精細地篩選結果,以便只顯示最佳匹配型別。

您可以透過啟用 workbench.settings.useWeightedKeySearch 設定來試用此預覽功能。

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

簡單檔案選擇器中隱藏點檔案的選項

當使用簡單檔案選擇器時(無論是連線到遠端還是使用files.simpleDialog.enable),您現在可以使用顯示/隱藏點檔案按鈕隱藏點檔案。

Screenshot that shows the simple file picker, highlighting the button to show or hide dot files.

編輯器

檢視引用拖放支援

Peek 檢視現在支援拖放。呼叫檢視引用檢視實現或任何其他 Peek 命令,並從其樹中拖動條目以將其作為單獨的編輯器開啟。

主題:GitHub Light Colorblind (Beta)(在 vscode.dev 上預覽)

出現次數高亮延遲

編輯器內出現次數高亮延遲現在預設設定為 0。這使得編輯器整體響應更靈敏。您仍然可以使用 editor.occurrencesHighlightDelay 設定控制延遲。

原始碼管理

更新的檢視標題

當我們將“源控制圖”檢視新增到“源控制”檢視時,它突出了“源控制”檢視中各部分標題的重複性:“源控制儲存庫”、“源控制”和“源控制圖”。在這個里程碑中,我們重新審視了檢視的標題,使其更短且不再重複檢視標題:“儲存庫”、“更改”和“圖”。

丟棄未跟蹤更改的改進

設定git.discardUntrackedChangesToTrash

多年來,我們收到了多份關於資料丟失的報告,因為丟棄未跟蹤的檔案將永久刪除該檔案,儘管 VS Code 顯示了一個模態對話方塊,明確指出該檔案將被永久刪除。

從這個里程碑開始,如果可能,丟棄未跟蹤的檔案將把檔案移動到回收站/垃圾桶,以便可以輕鬆恢復檔案。您可以使用 git.discardUntrackedChangesToTrash 設定停用此功能。

Screenshot of the modal dialog shown when discarding an untracked file.

診斷提交鉤子(實驗性)

設定:

在此里程碑中,我們引入了一個新的提交鉤子,當更改的檔案存在任何未解決的診斷問題時,它會提示您。這目前是一個實驗性功能,可以透過 git.diagnosticsCommitHook.Enabled 設定啟用。

預設情況下,提交鉤子會提示任何錯誤級別的診斷資訊,但可以使用 git.diagnosticsCommitHook.Sources 設定自定義診斷來源和級別。請嘗試一下並告訴我們您的反饋。

Screenshot of the modal dialog shown when there are unresolved diagnostics for the changed files.

Notebook

內聯筆記本差異檢視(實驗性)

設定notebook.diff.experimental.toggleInline

您現在可以為筆記本啟用內聯差異檢視。此功能使您可以在單個內聯檢視中檢視筆記本單元格內的更改,而不是傳統的並排比較。

透過將 notebook.diff.experimental.toggleInline 設定為 true 來啟用此功能。然後,您可以使用右上角的編輯器選單將差異檢視切換為內聯。

筆記本內聯值懸停

筆記本內聯值現在會截斷其修飾以適應視口寬度,並具有豐富的懸停以顯示完整值,同時保持空白格式。這保持了資料幀等變數的形狀,使值一目瞭然。

Screenshot that shows the cursor hovering above a dataframe object's inline decoration. A rich value hover is shown.

終端 IntelliSense(預覽)

設定terminal.integrated.suggest.enabled

我們透過新增完成規範(例如 git)、最佳化命令列解析以提供更好的建議以及增強檔案和資料夾完成功能,顯著改進了 bash、zsh、fish 和 PowerShell 的終端 shell 完成功能。透過 terminal.integrated.suggest.enabled 啟用此功能。

增強的 Fig 完成支援

我們利用 Fig 完成規範為特定的 CLI 提供智慧完成。以前我們只有少量這些規範,但此次迭代中,我們將以下 CLI 新增到 VS Code 隨附的列表中:

  • 基本工具:catchmodchowncpcurldfduechofindgrepheadlesslsmkdirmoremvpwdrmrmdirtailtoptouchuname
  • 程序工具:killkillallps
  • 包管理器:aptbrew
  • Node.js 生態系統:nodenpmnpxnvmpnpmyarn
  • SCM、語言、編輯器:gitnanopythonpython3vim
  • 網路:scpsshwget

除了新的規範之外,我們現在還支援*生成器*,它們透過在請求時執行命令來動態生成完成。一個實際的例子是為 git checkout 顯示所有分支:

顯示“git checkout tyriar/xterm”完成的螢幕截圖,顯示多個結果,包括不完全匹配查詢的模糊結果。 主題:Sapphire(在 vscode.dev 上預覽)

在幕後,這會執行 git --no-optional-locks branch -a --no-color --sort=-committerdate 來獲取分支列表,然後將其處理為完成。類似的方法也用於獲取標籤。

可配置的快速建議

設定terminal.integrated.suggest.quickSuggestions

與編輯器類似,*快速建議*是指在鍵入*任何內容*時自動顯示 IntelliSense,而不是*觸發字元*,後者在使用 \- 等特定字元時顯示。新的 terminal.integrated.suggest.quickSuggestions 設定允許精確控制何時顯示快速建議。

預設值啟用命令和引數的快速建議,現在預設停用,回退到路徑,我們聽說這可能會變得嘈雜和令人沮喪,因為它們通常不適用。這是預設值

"terminal.integrated.suggest.quickSuggestions": {
  "commands": "on",
  "arguments": "on",
  "unknown": "off"
}

內聯建議檢測

設定terminal.integrated.suggest.inlineSuggestion

迄今為止,內聯建議檢測的一個問題是不同來源的建議之間的競爭造成的混亂。具體來說,當在 shell 中鍵入時經常出現的內聯建議

Screenshot that shows fish shell showing suggestions, such as previous git commit commands when typing a prefix.

這些建議實際上是 shell 級別的功能(fish/zsh 中的自動建議,pwsh 中的預測等),這對於使用者來說可能不明顯,尤其是在與 IntelliSense 同時出現時。

IntelliSense 功能要求我們檢測此內聯建議,以前使用的天真實現只檢查文字是否使用模糊斜體SGR 屬性進行樣式設定。事實證明,這還不夠,不僅在使用者自定義樣式時,而且 fish shell 預設也不使用這兩種樣式。我們現在透過分析命令列上下文和游標位置來檢測大多數情況。

基於這種新的改進檢測,內聯建議現在作為帶有星形圖示的頂部選項呈現,既與編輯器行為更一致,也更清楚在這種情況下 kstyle(Tab) 將做什麼。

Screenshot that shows when an inline suggestion shows up, it will be detected and put beside a star icon at the top of IntelliSense.

預設情況下,始終將此建議顯示為頂部建議,但可以使用 terminal.integrated.suggest.inlineSuggestion 進行配置。

詳細的命令完成

bash 和 zsh 內建命令以及 PowerShell 命令的完成現在更加詳細,提供了可用引數的詳細資訊。此資訊來源於 shell 的文件或幫助命令。

對於 bash,使用 help 獲取基本描述

Screenshot that shows the history completion in bash, showing usage information and description.

對於 zsh,使用 man zshbuiltins 獲取詳細描述

Screenshot that shows completions in zsh, displaying detailed information from the manpage.

對於 PowerShell,Get-Command 的更多屬性顯示在完成中

Screenshot that shows the completion for Get-ChildItem, showing the module Microsoft.PowerShell.Management and its version.

Screenshot that shows the completion for ConvertTo-Json, showing the signature of the command.

改進的排序

命令完成現在具有改進的排序功能,具體而言:

  • 包含更多詳細資訊的完成通常顯示在詳細資訊較少的完成上方
  • 內建命令優先於 $PATH 中的路徑

Screenshot that shows the more useful alias and autoload commands showing before others in zsh.

對於路徑,進行了以下改進:

  • _ 開頭的路徑會受到懲罰,因為這通常表示它們是特殊的,通常不應更改太多(例如,__init__.py)。
  • 排序時忽略標點符號,因此以 . 開頭的檔案將與其他檔案混在一起。

Screenshot that shows init.py will show below other files, while a .build dir will show immediately above a build file.

CDPATH 支援

設定terminal.integrated.suggest.cdPath

$CDPATH 環境變數是一種常見的 shell 功能,包含一個由冒號分隔的路徑列表,類似於 $PATH,允許像它們是相對路徑一樣導航它們,無論當前工作目錄如何。Fish 實際上在 cd 補全中顯示 CDPATH 條目

Screenshot that shows tab completion in fish, displaying entries from CDPATH.

我們現在支援在使用 cd 時將 $CDPATH 條目顯示為完成項

Screenshot that shows CDPATH entries now show up in IntelliSense.

此功能也適用於 Windows(; 分隔符),並且不需要 shell 本機支援該功能,因為預設情況下使用絕對路徑。

Screenshot that shows a CDPATH containing 2 paths separated by a semi-colon, including all sub-directories even on PowerShell which does not support CDPATH natively.

使用 terminal.integrated.suggest.cdPath 進行配置。

絕對路徑

現在支援絕對路徑。

Screenshot that shows "cd c:\Github\mi" will show results for all absolute folders matching that term.

Screenshot that shows cd to absolute paths also works with Unix-style paths.

別名支援

現在還檢測 bash、zsh 和 fish 的命令別名,並具有一個新的獨特圖示

Screenshot that shows the alias c->code-insiders will now be detected and show with the command icon with a little arrow in the corner.

區分選項和標誌

CLI 選項(有值)和標誌(無值)現在透過不同的圖示在 UI 中進行區分

Screenshot that shows flags like --help will show a flag icon, options like --diff will show a different icon.

任務

任務重新執行操作

我們為終端添加了一個新的重新執行任務操作,⌃⇧R (Windows, Linux Ctrl+Shift+R)。此操作顯示在終端選項卡的內聯工具欄和終端的上下文選單中。

除錯

除錯內聯值懸停

如果啟用了 debug.inlineValues 設定,內聯值裝飾現在具有內聯懸停功能,使得一眼就能更容易地讀取更長的值。

Screenshot that shows the cursor hovering above a dataframe object's inline decoration in an active debugging session. Rich value hover is shown.

語言

TypeScript 5.8

VS Code 現在包含 TypeScript 5.8.2。此重大更新帶來了新的語言改進,包括改進了條件表示式的型別檢查支援編寫符合 Node 新的 --experimental-strip-types 選項的程式碼。它還包含了一些工具改進和錯誤修復。

請檢視TypeScript 5.8 釋出部落格,瞭解此更新的更多詳細資訊。

遠端開發

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

亮點包括:

  • Linux 舊伺服器終止支援
  • 擴充套件代理可配置性

您可以在遠端開發發行說明中瞭解有關這些功能的更多資訊。

企業支援

允許擴充套件的多行支援

您現在可以使用多行字串在 Windows 組策略中配置允許的擴充套件。這允許更靈活和更廣泛地配置允許的擴充套件。瞭解有關配置允許的擴充套件的更多資訊。

對擴充套件的貢獻

Python

中斷長字串時自動插入引號

Pylance 現在支援自動插入引號,以在中斷長字串時實現無縫體驗。

Pylance 記憶體消耗改進

進行了一些最佳化以改進 Pylance 的記憶體消耗,特別是在處理大型工作區時。此增強功能已新增到 Pyright,它是為 Pylance 語言伺服器功能提供支援的靜態型別檢查器。

Python Shell 整合改進

修改 python.terminal.shellIntegration.enabled 後,您不再需要重新載入才能使更改生效。只需建立一個新終端即可在終端中的 Python REPL 中檢視所需的更改。

Windows Git Bash 的正確工作區提示

在 Windows 上使用 Git Bash 的 Python 使用者現在將在其終端提示中看到正確的工作目錄。這些更改適用於選擇加入 pythonTerminalEnvVarActivation 實驗的使用者。

自動測試發現檔案模式的新設定

您現在可以透過在 python.testing.autoTestDiscoverOnSavePattern 設定中指定 glob 模式來最佳化自動測試發現發生的檔案。其預設值設定為 **/*.py

從 settings.json 讀取測試除錯配置作為備用

我們現在在 settings.jsonlaunch.json 檔案中查詢測試除錯配置,擴充套件了您可以定義這些配置的位置。

GitHub 身份驗證

透過採用 Electron fetch 改進代理支援

GitHub 身份驗證擴充套件現在利用 Electron 版本的 fetch 來發出 Web 請求。這有助於使用某些代理和防火牆設定的使用者。如果您知道您在具有代理設定的環境中執行,並且無法在 VS Code 中向 GitHub 進行身份驗證,請隨時建立問題!

擴充套件創作

身份驗證

重要:我們正在將 AuthenticationForceNewSessionOptions 重新命名為 AuthenticationGetSessionPresentationOptions,並暫時保留已棄用的 AuthenticationForceNewSessionOptions。功能上沒有區別,因此這在執行時不是一個重大更改,但您應該更新您的程式碼以使用 AuthenticationGetSessionPresentationOptions 而不是 AuthenticationForceNewSessionOptions,因為它將在將來移除。

檢視這兩個身份驗證呼叫:

vscode.authentication.getSession(provider, scopes, { createIfNone: options });
vscode.authentication.getSession(provider, scopes, { forceNewSession: options });

createIfNoneforceNewSession 現在將接受 booleanAuthenticationGetSessionPresentationOptions

/**
 * Optional options to be used when calling {@link authentication.getSession} with interactive options `forceNewSession` & `createIfNone`.
 */
export interface AuthenticationGetSessionPresentationOptions {
  /**
   * An optional message that will be displayed to the user when we ask to re-authenticate. Providing additional context
   * as to why you are asking a user to re-authenticate can help increase the odds that they will accept.
   */
  detail?: string;
}

可以在此處找到完整的型別定義...

這是 createIfNone 的新新增功能,但它是對 forceNewSession 的修改,後者過去接受一個與新的 AuthenticationGetSessionPresentationOptions 具有相同簽名的 AuthenticationForceNewSessionOptions

如果您明確使用 AuthenticationForceNewSessionOptions,您會發現它被標記為已棄用,您應該將其替換為 AuthenticationGetSessionPresentationOptions,因為 AuthenticationForceNewSessionOptions 將在未來的版本中移除。

重要的是要注意,這裡唯一改變的是型別。沒有執行時更改,因此從這個角度來看,這不是一個破壞性更改。

此外,authLearnMore 提議的 API 已從 AuthenticationForceNewSessionOptions 更新為 AuthenticationGetSessionPresentationOptions

以下是利用 detaillearnMore 提案的示例

Screenshot that shows the authentication modal dialog, featuring a message that says 'To get more relevant Copilot Chat results, we need permission to read the contents of your repository on GitHub.' and a button to learn more.

精簡的片段 API

您現在可以控制插入片段時的空白標準化。這適用於 insertSnippet-API 和 SnippetTextEdit-API,並控制是否調整片段附加行的縮排。

const snippet = `This is an indented
    snippet`;

// keepWhitespace: false, undefined
function indentedFunctionWithSnippet() {
  return `This is an indented
        snippet`; // adjusted indentation
}

// keepWhitespace: true
function indentedFunctionWithSnippet() {
  return `This is an indented
    snippet`; // original indentation
}

提議的 API

文字編碼

我們添加了新的提議 API,用於在 VS Code 中處理文字編碼

具體來說,這個新的 API 允許

  • 獲取 TextDocument 的當前 encoding
  • 使用特定 encoding 開啟 TextDocument
  • string 編碼為帶有特定 encodingUint8Array
  • 使用特定 encodingUint8Array 解碼為 string

請嘗試一下,並在此 GitHub 問題中告訴我們您的想法。

Shell 環境

擴充套件能夠訪問從 VS Code 整合終端開啟的 pwsh、zsh、bash 和 fish shell 的使用者當前活動 shell 環境資訊。這僅在啟用 terminal.integrated.shellIntegration.enabled 時可用。

使用者可以透過 terminal.integrated.shellIntegration.environmentReporting 決定是否報告其 shell 環境資訊。

請嘗試一下,並在此 GitHub 問題中告訴我們您的想法。

工程

Electron 34 更新

在此里程碑中,我們將 Electron 34 更新推廣給我們的穩定版本使用者。此更新附帶 Chromium 132.0.6834.196 和 Node.js 20.18.2。我們要感謝所有在 Insider 版本上自託管並提供早期反饋的使用者。

macOS 10.15 支援已終止

VS Code 1.97 是最後一個支援 macOS 10.15 (macOS Catalina) 的版本。請參閱我們的常見問題以獲取更多資訊。

開發時跟蹤洩露的可支配物件

VS Code 使用可支配模式進行顯式資源管理,例如關閉檔案、清理 DOM 元素或刪除事件監聽器。不處理資源意味著記憶體浪費,記憶體使用量會隨著時間的推移而累積。

我們一直在尋找此類洩漏,並添加了另一個檢測工具。我們利用 FinalizationRegistry API,因為它會在物件被垃圾回收時通知我們。如果這樣的物件代表一個未被處理的 disposable,這意味著我們有一個洩漏。這些被收集並顯示給 VS Code 的開發人員,以便我們可以在工作時進行清理。

值得注意的修復

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-eslint 的貢獻

vscode-hexeditor 的貢獻

vscode-jupyter 的貢獻

vscode-languageserver-node 的貢獻

vscode-mypy 的貢獻

vscode-pull-request-github 的貢獻

vscode-python-debugger 的貢獻

vscode-vsce 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

python-environment-tools 的貢獻