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

2024 年 1 月 (1.86 版本)

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

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

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

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

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

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

輔助功能

警報

螢幕閱讀器和盲文使用者現在可以配置更多警報,例如命中斷點時、當前行有錯誤時等。這些警報可以透過以 accessibility.alert 開頭的設定進行配置,也可以使用幫助:列出警報命令進行探索和配置。

使用“嘿,Code”語音命令

透過新的 accessibility.voice.keywordActivation 設定,您可以啟用 VS Code 監聽“嘿,Code”語音命令,以啟動與 Copilot Chat 的語音會話。語音識別在您的本地計算機上計算,絕不會發送到任何伺服器。

可用選項包括

  • chatInView: 從聊天檢視開始語音聊天
  • quickChat: 從快速聊天控制元件開始快速語音聊天
  • inlineChat: 從編輯器中的內聯聊天開始語音聊天
  • chatInContext: 如果焦點在編輯器中,則從內聯聊天開始語音,否則從聊天檢視開始語音聊天

以下示例顯示了配置了 inlineChat 選項的“嘿,Code”

狀態列中的小麥克風圖標表示 VS Code 正在使用麥克風識別“嘿,Code”。

語音聊天會話完成後,VS Code 將再次監聽“嘿,Code”以重新開始。

要使用此新功能,需要以下擴充套件:

注意:語音識別在您的本地計算機上執行,絕不會發送到任何伺服器。

工作臺

恢復輔助視窗

在此版本中,與主視窗關聯的所有已開啟的浮動視窗將在您重新啟動應用程式時恢復。這包括已開啟的編輯器以及輔助視窗的大小和位置。

樹檢視中的粘性滾動

在編輯器中粘性滾動成功的基礎上,我們已將此功能擴充套件到所有樹檢視,使使用者能夠更輕鬆地導航專案樹。樹檢視的粘性滾動可以透過 workbench.tree.enableStickyScroll 設定啟用或停用。

為確保粘性滾動不會佔用太多空間,它被限制為檢視高度的最大 40%。此外,使用者可以透過配置 workbench.tree.stickyScrollMaxItemCount(預設設定為 7)來自定義粘性元素的最大數量。如果粘性元素多於可顯示數量,如果樹檢視支援此功能,粘性滾動將合併最後幾個粘性元素。

為了改善樹導航體驗,您可以選擇一個粘性元素以直接跳轉到樹中的該元素。或者,按下父元素的展開箭頭以隱藏其所有子元素。此外,啟用粘性滾動後,訪問複選框和操作項會更容易。

按視窗配置縮放級別

新的設定 window.zoomPerWindow 預設啟用,允許您配置縮放命令(放大縮小重置縮放)僅應用於活動視窗,而不應用於所有已開啟的視窗。以前,使用這些命令不僅會將其應用於所有已開啟的視窗,還會更新 window.zoomLevel 設定。

我們認為使用這些命令更多是一種即興手勢,例如在演示時,因此它們應該只應用於呼叫它們的視窗。

如您在此示例中看到的,只有活動視窗的縮放級別發生變化,而其他視窗的縮放級別沒有變化

當視窗的自定義縮放級別與 window.zoomLevel 設定值不匹配時,狀態列中會顯示一個縮放級別指示器。選擇狀態列指示器以查詢更改縮放級別、重置縮放級別或快速轉到相關設定的控制元件。

Zoom indicator and controls in the Status Bar.

具有自定義縮放級別的視窗在重新啟動和工作區更改後會保留該縮放級別。

注意:window.zoomPerWindow 配置為 false 可恢復以前的縮放級別行為。

更強大靈活的自動儲存選項

VS Code 長期以來一直提供自動儲存選項。在此版本中,我們使此功能更加強大。

按資源或語言配置自動儲存

所有自動儲存設定現在都可以按資料夾或語言配置,這使您可以選擇性地僅為特定語言或資料夾啟用自動儲存。

在下面的示例中,設定配置如下:

{
  "[markdown]": {
    "files.autoSave": "afterDelay"
  }
}

如您所見,編輯的 Markdown 檔案會立即儲存,而 TypeScript 檔案仍未儲存。

出現錯誤時停用自動儲存

新的 files.autoSaveWhenNoErrors 設定允許您在自動儲存通常儲存編輯器時,如果檔案中存在錯誤標記,則停用自動儲存。

當您有外部工具監視檔案更改時,這可能很有用,您希望避免這些工具對包含錯誤的檔案進行操作。

僅針對工作區檔案自動儲存

最後,一個新的設定 files.autoSaveWorkspaceFilesOnly 將自動儲存限制為僅限工作區內的檔案。

允許按擴充套件停用通知

我們現在提供更精細的控制,用於停用來自擴充套件的通知。從通知 Toast 中,您可以停用該擴充套件的通知

Turn off notifications for an extension.

在通知中心,有一箇中心位置可以管理所有已觸發通知的擴充套件的通知啟用狀態

Manage notifications for extensions.

此新功能補充了我們現有的“請勿打擾”模式,該模式全域性停用所有通知。與全域性開關一樣,錯誤通知將始終出現且無法停用。

允許交換左右差異編輯器

當您比較兩個檔案(例如從檔案資源管理器中)時,會出現一個新操作,用於交換差異編輯器的左側和右側。

注意:比較兩個可編輯檔案允許您在任一側進行更改。

從命令列讀取 stdin 時不強制執行 --wait

使用終端時,您可以將程序的輸出直接傳遞到 VS Code 以作為編輯器開啟,例如

  • 在 Linux 或 macOS 上執行 ps aux | grep code | code -
  • 在 Windows 上執行 echo Hello World | code -

到目前為止,這也意味著 --wait 標誌,這意味著您必須關閉編輯器視窗或整個 VS Code 才能返回終端提示符。在此里程碑中,我們不再在從 stdin 讀取時強制執行 --wait,因此您可以立即返回終端提示符。

注意:要恢復以前的行為,只需在命令列呼叫中附加 --wait

支援帶有原生標題欄的自定義標題欄

我們引入了 window.customTitleBarVisibility 設定,它允許即使在使用原生標題欄時也顯示自定義標題欄。這對於喜歡原生選項卡的 macOS 使用者尤其有利。透過此新設定,原生標題欄使用者現在可以訪問自定義標題欄功能,例如

  • 命令中心:直接從自定義標題欄輕鬆訪問命令中心。
  • 佈局控制元件:更靈活地自定義您的工作區佈局。
  • 活動欄自定義:將活動欄操作移到頂部。
  • 編輯器操作自定義:將編輯器操作重新定位到自定義標題欄。

此外,對於喜歡全屏模式下簡潔檢視的使用者,window.customTitleBarVisibility: "windowed" 選項允許您在全屏模式下隱藏自定義標題欄。此功能可確保更專注、無干擾的編碼環境,同時仍提供在非全屏模式下使用自定義標題欄功能的選項。

The 'Window: Custom Title Bar Visibility' setting in the Settings editor.

強制執行系統顏色主題的新設定

新的設定 window.systemColorTheme 允許您顯式覆蓋應用於 VS Code 中原生元素(例如 macOS 上的選單或對話方塊)的系統顏色主題。該設定支援以下值:

  • default: 顏色主題與作業系統(預設選項)的顏色主題匹配。
  • auto: 根據 VS Code 主題選擇 lightdark
  • light: 選擇 light 系統主題
  • dark: 選擇 dark 系統主題

下面是此設定如何應用於 macOS 上下文選單的示例,上半部分顯示 light,下半部分顯示 dark

Showing both 'light' and 'dark' system theme applied to a context menu.

允許不經確認關閉無標題工作區

新的設定 window.confirmSaveUntitledWorkspace 允許您在關閉包含無標題工作區的視窗時停用顯示確認對話方塊。現在對話方塊上還有一個複選框可以停用顯示它。window.confirmSaveUntitledWorkspace 設定預設啟用以保持當前行為。

Untitled workspace confirmation dialog showing checkbox to always discard changes.

注意:我們的文件中瞭解有關無標題工作區的更多資訊。

在輸出面板中切換自動換行

輸出面板現在支援透過使用檢視:切換自動換行命令來切換自動換行。這對於在輸出面板中檢視長行文字很有用。

在新視窗中開啟輸出面板

輸出面板現在在面板標題選單中有一個在新視窗中開啟輸出操作,用於在單獨的視窗中檢視輸出面板。

從 CLI 更新擴充套件

您現在可以使用 --update-extensions 引數從命令列更新擴充套件。這將把所有已安裝的擴充套件更新到最新版本。

快速選擇中的懸停現在使用自定義懸停

我們已將快速選擇中的幾個懸停改為使用自定義懸停,而不是原生渲染。這允許更豐富的渲染和產品範圍內更高的一致性。

Quick Pick hover rendered with custom hover instead of native.

在差異編輯器中審查多個檔案

在此版本中,多檔案差異編輯器現在已為所有使用者啟用。多檔案差異編輯器允許您在一個可滾動檢視中檢視多個檔案的更改

目前,多檔案差異編輯器可用於審查本地更改、暫存更改、傳入/傳出更改、暫存區以及拉取請求中的更改。可以透過選擇各種新的檢視更改操作來開啟它,這些操作可以透過多檔案差異圖示識別。

當從原始碼管理檢視開啟差異編輯器時,它會隨著檔案更改或暫存而動態更新檢視。

多檔案差異編輯器仍在開發中,因此預計在未來的版本中會看到更多改進和錯誤修復。

GitHub 拉取請求擴充套件中的多檔案差異

當安裝了GitHub 拉取請求和問題擴充套件時,您可以設定 "githubPullRequests.focusedMode": "multiDiff" 以在開啟拉取請求時自動開啟多檔案差異編輯器。

當您設定好github.dev後,您可以在 GitHub 上對拉取請求按 . 鍵,然後github.dev 將開啟多檔案差異編輯器以審查更改。

編輯器

貼上文字/HTML 內容

貼上為...”命令現在允許您貼上剪貼簿中的 text/html 內容

Using 'Paste As' to paste HTML content.

例如,當您從網頁複製內容時,您可以使用此功能貼上內容的 HTML,而不是將其貼上為純文字

原始碼管理

提交輸入自定義

在此里程碑中,我們添加了一個新設定 scm.inputMinLineCount,可用於控制提交輸入欄位的初始高度。控制提交輸入欄位最大大小的設定已從 scm.inputMaxLines 重新命名為 scm.inputMaxLineCount,以使其與類似設定的命名約定匹配。

使用者現在可以使用特定語言的編輯器設定進一步自定義提交輸入欄位。特定語言的編輯器設定可用於定義編輯器規則和停用自動換行

"[scminput]": {
    "editor.rulers": [
      50,
      72
    ],
    "editor.wordWrap": "off"
  }

原始碼管理儲存庫檢視改進

為了更好地管理包含大量儲存庫的工作區,我們向儲存庫上下文選單添加了一個新命令:“關閉其他儲存庫”。我們還為“關閉儲存庫”和“關閉其他儲存庫”命令添加了多選支援,因此使用者可以一次關閉多個儲存庫,或者關閉除少數幾個儲存庫之外的所有儲存庫。

由於擴充套件貢獻的操作,原始碼管理儲存庫檢視可能會變得混亂。為了解決這個問題,我們添加了隱藏貢獻操作的功能,只需右鍵單擊該操作並選擇“隱藏”即可。隱藏的操作將移至“...”選單。除“簽出”和“同步”之外的所有操作都可以隱藏。

傳入/傳出更改改進

我們繼續完善原始碼管理檢視中的傳入/傳出更改部分。在此里程碑中,我們進行了更改,以便僅噹噹前分支具有跟蹤遠端分支時才顯示傳入更改節點。

我們已將獲取拉取操作新增到傳入更改節點,並將推送操作新增到傳出更改節點。

我們已新增操作以檢視每個單獨的提交,以及利用多檔案差異編輯器的所有傳入/傳出更改。

使用者現在可以使用新設定 scm.showChangesSummary 來隱藏所有更改條目。

合併標籤的能力

我們透過新增合併標籤的功能,解決了長期以來的功能請求。命令面板中添加了一個新命令:Git: 合併...,它取代了Git: 合併分支...命令。呼叫Git: 合併...命令將顯示一個快速選擇控制元件,其中列出了分支和標籤。

檢視暫存命令

我們添加了一個新命令,Git: 檢視暫存...,它使使用者能夠在多檔案差異編輯器中檢視儲存庫中的任何暫存。當檢視 Git 暫存時,編輯器標題選單將包含應用/彈出或刪除暫存的操作。

使用 SSH 金鑰簽署提交

在此里程碑中,我們添加了使用帶有密碼的 SSH 金鑰簽署提交的功能。使用 SSH 金鑰簽署提交時,VS Code 將在螢幕頂部顯示一個快速選擇控制元件,以提示輸入密碼。VS Code 不會快取密碼,並且每次簽署提交時都會提示輸入密碼。

Notebook

浮動視窗支援

現在可以在浮動視窗中開啟筆記本編輯器。您可以將筆記本選項卡從主視窗拖出以在新視窗中開啟,或使用“檢視:將編輯器移動到新視窗”命令。

內建變數檢視

我們已在“執行和除錯”檢視中添加了一個實驗性變數檢視,可用於檢視筆記本核心中的變數(如果擴充套件提供了這些變數)。此功能可以透過此設定啟用

"notebook.experimental.variablesView": true

筆記本粘性滾動

筆記本編輯器的粘性滾動功能經過了顯著的完善,以使其風格與工作臺的其餘部分保持一致,併為每個 Markdown 元素添加了摺疊控制元件。

終端

選擇下方顯示背景

當啟用 GPU 加速時,具有非預設背景顏色的單元格現在將“在”常規選擇顏色下方渲染。

Cell background colors in the terminal are now retained, even when selected.

透過滑鼠滾輪縮放終端

在啟用此設定後,按住 Ctrl 的同時,可以使用滑鼠滾輪放大和縮小終端。

"terminal.integrated.mouseWheelZoom": true

多行貼上警告改進

在之前的版本中,terminal.integrated.enableMultiLinePasteWarning 接受 true(預設)或 false。當 true 處於活動狀態時,它總是顯示警告,除非啟用了括號貼上模式或行以 \n 字元結尾。此設定現在接受包含以下選項的字串:

  • auto: 以前的 true 行為
  • always: 始終顯示警告
  • never: 從不顯示警告

此外,對話方塊中有一個新按鈕,用於將字串貼上為單行,這將刪除所有 \r\n 字元。

檔案協議 URI (file://) 現在支援末尾的行號和列號擴充套件,就像大多數其他連結一樣。還支援新的 #<line> 格式。

終端語音命令

新的終端:啟動終端語音終端:停止終端語音命令可在終端中啟用語音轉文字會話。

要使用此新功能,請安裝 VS Code 語音擴充套件。

任務

路徑分隔符變數的簡寫

新的 ${/} 變數可以用作現有 ${pathSeparator} 變數的簡寫。

除錯

觸發斷點

您現在可以設定在另一個斷點命中後自動啟用的斷點。例如,這在診斷僅在滿足特定前置條件後才發生的程式碼故障情況時可能很有用。觸發斷點適用於所有語言,並且條件斷點也可以用作觸發器。

可以透過右鍵單擊字形邊距,選擇“新增觸發斷點...”,然後選擇啟用此斷點的其他斷點來設定觸發斷點。

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

會話結束時關閉只讀檔案

當連線到偵錯程式時,可能會存在磁碟上不存在的內部或虛擬原始檔,這些檔案以只讀方式開啟。有一個新設定 debug.closeReadonlyTabsOnEnd,它會在除錯會話結束時,VS Code 自動關閉從除錯會話中開啟的所有隻讀檔案。

測試

更多執行測試的方法

在單擊測試裝飾時按住 Alt,現在會在可用時以除錯模式執行該測試。

現在,在資源管理器檢視中有上下文選單操作,可用於執行檔案中或資料夾中宣告的所有測試。

為擴充套件作者最終確定 TestRunProfile.isDefault/onDidChangeDefault API

以前,TestRunProfile.isDefault 只控制測試執行配置檔案的初始預設狀態,之後從未更改或讀取。

在此版本中,使用者更改其選定配置檔案將反映在 TestRunProfile.isDefault 屬性中,並觸發相應的 TestRunProfile.onDidChangeDefault 事件。同樣,當擴充套件更改 isDefault 時,這將導致 UI 中的選定配置檔案更新。

語言

想要將您複製的連結轉換為 Markdown 連結嗎?當您在選中文字的 Markdown 檔案中貼上 URL 時,VS Code 現在會自動插入 Markdown 連結

此功能由 markdown.editor.pasteUrlAsFormattedLink.enabled 設定控制。您可以更改它以自定義此行為

  • smartWithSelection — 預設值。當您選中文字且不在特殊元素(例如程式碼塊)內時,此功能啟用。
  • smart — 與 smartWithSelection 相同,但不需要選擇。
  • always — 始終將 URL 貼上為 Markdown 連結
  • never — 停用貼上為 Markdown 連結。

貼上值後,您始終可以使用“貼上”控制元件切換以不同方式貼上內容。

配置 Markdown 的音訊/影片片段

新的 markdown.editor.filePaste.audioSnippetmarkdown.editor.filePaste.videoSnippet 設定允許您自定義音訊和影片檔案在拖放或貼上時如何插入到 Markdown 中。片段可以使用以下變數:

  • ${src} — 音訊/影片檔案的解析路徑。
  • ${title} — 用於音訊/影片的標題。將自動為此變數建立一個片段佔位符。

新的 Less 語法

以前的 Less 語法已存檔,VS Code 現在使用來自 Better-Less 的語法進行 Less 語法高亮。

新的 Go 語法

Go 語法高亮語法已更改為使用 Go Syntax,它比以前的語法更積極地維護。

遠端開發

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

亮點包括:

  • 在使用者資料資料夾中建立 devcontainer.json
  • 使用 Dockerfile 時,在 devcontainer.json 中指定構建選項。

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

對擴充套件的貢獻

GitHub Copilot

現在可以使用設定 editor.inlineSuggest.fontFamily 更改內聯建議的字體系列。

儲存前確認內聯聊天

我們強調負責任地使用 AI,尤其是在原始碼方面。因此,我們添加了一個新設定,要求使用者在儲存由 Copilot 生成的程式碼之前進行確認。此設定 inlineChat.acceptedOrDiscardBeforeSave 預設啟用。

內聯聊天儲存同意訊息。 主題:GitHub Light Default (在 vscode.dev 上預覽)

當該設定啟用時,檔案儲存將等待使用者接受或放棄任何待處理的內聯聊天會話。這也適用於啟用自動儲存時,自動儲存將暫時停用,直到內聯聊天結束。

按住說話模式

不久前,我們為 VS Code 添加了語音支援。安裝 VS Code 語音擴充套件,它為聊天輸入欄位添加了語音轉文字支援。

對於內聯聊天,我們現在添加了“按住說話”功能,其工作方式如下:

  • Cmd+ICtrl+I 觸發內聯聊天。
  • 按住按鍵,並注意語音錄製如何自動開始。
  • 鬆開按鍵以停止錄製並將您的請求傳送給 Copilot。

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

此新模式還帶有一個設定,預設啟用,但可以透過 inlineChat.holdToSpeech 停用。

預覽:內聯聊天快速語音

除了“按住說話”之外,我們還在試驗此功能的更輕量級的替代 UI。透過按 Cmd+KCtrl+K 然後按住 I 來啟用快速語音。在按住 I 的同時,會顯示一個更輕量級的錄製 UI。釋放後,請求將傳送。

Quick Voice showing only a microphone indicator and the text of the recorded voice message.

內聯聊天即時模式

上一個版本有一個新的實驗性內聯聊天模式,名為 live3。它提供更流暢的流媒體體驗和更易於理解的差異檢視。現在它已經畢業並取代了以前的 live 模式。預設仍然是 livePreview,但我們鼓勵使用者嘗試 live。我們還在進行一項實驗,以瞭解哪種模式效果最好。

AI 修復的燈泡(閃光)

要呼叫 Copilot,您還可以使用編輯器中的燈泡指示器。選擇一段文字或將游標移動到新行,選擇燈泡,然後選擇使用 Copilot 修改使用 Copilot 生成

如果沒有其他程式碼操作,燈泡會顯示為閃光,並會直接開啟內聯聊天。

Inline chat opened from the sparkle.

#file 上下文變數

您可以透過在聊天輸入中鍵入 # 來使用一些上下文變數,我們添加了 #file,讓您可以將工作區中指定的檔案作為上下文包含在聊天提示中。從輸入中的建議控制元件中選擇 #file,然後從出現的快速選擇中選擇一個檔案。

如果可能,將包含檔案的全部內容。如果內容太大無法放入上下文視窗,則將包含檔案的大綱,其中包含函式及其描述,但不包含實現。如果大綱也太大,則該檔案將不作為提示的一部分。

File context example in the Copilot Chat View.

聊天中的預設上下文

以前,我們預設會將活動程式碼編輯器中的兩種上下文型別包含在您的聊天請求中:

  1. 如果存在文字選擇,則會包含該選擇。
  2. 如果沒有任何選擇,則會包含活動編輯器可見視口中的程式碼範圍。

我們發現第二種型別在您想提出一般性問題時可能會導致混淆,但大型語言模型會將其解釋為關於編輯器中作為上下文包含的程式碼的問題。我們正在嘗試預設不包含視口中的程式碼,而只包含選定的程式碼。

當然,您經常會想詢問您在編輯器中可以看到的程式碼,因此我們添加了一個新的上下文變數 #editor

Editor context example in the Copilot Chat View.

新增“清除所有工作區聊天”命令

每次您使用 + 按鈕開始新聊天時,您之前的聊天都會儲存在您的工作區聊天曆史記錄中,您可以透過聊天檢視標題中的時鐘圖示訪問該歷史記錄。我們添加了“清除所有工作區聊天”命令,以便方便地清除您過去的所有聊天曆史記錄。

提交訊息語言

現在,用於生成 git 提交訊息的程式碼使用 github.copilot.chat.localeOverride 設定以特定語言生成提交訊息。

請求私有儲存庫的額外許可權

為了啟用私有儲存庫的額外工作區搜尋功能,我們需要額外許可權。如果檢測到我們尚未擁有這些許可權,我們將在啟動時請求它們。一旦授予,我們將安全地儲存會話以備將來使用。

Modal window asking for additional authentication for a private repository.

Python

預設安裝 Python 偵錯程式擴充套件

Python 偵錯程式擴充套件現在與 Python 擴充套件一起預設安裝。

Python 偵錯程式擴充套件旨在將除錯功能與主 Python 擴充套件分離,以防止相容性問題。這確保了即使 Python 擴充套件放棄對舊 Python 版本(例如 Python 3.7)的支援,您也可以繼續除錯使用這些版本的專案,而無需降級 Python 擴充套件。它還提供特定於平臺的構建,確保您只接收與您的特定作業系統相關的元件,從而減少下載時間和不必要的開銷。

此新擴充套件複製了主 Python 擴充套件中所有可用功能,甚至更多。

為了確保您正在使用新的 Python 偵錯程式擴充套件,請將 launch.json 配置檔案中的 "type": "python" 替換為 "type": "debugpy"。將來,Python 擴充套件將不再提供除錯支援,我們將把所有除錯支援轉換為 Python 偵錯程式擴充套件以實現所有除錯功能。

Python 直譯器快速選擇中的“建立環境”選項

您現在可以更方便地從 Python 直譯器快速選擇中建立 Python 環境。執行“Python:選擇直譯器”命令,然後選擇“建立環境”選項以為您的專案建立一個新的虛擬環境。

Python 直譯器快速選擇中的“建立環境”選項。 主題:Catppuccin Mocha (在 vscode.dev 上預覽)

工作區 conda 環境的顯示改進

Python 直譯器快速選擇現在顯示工作區中 conda 環境的名稱,以便更容易識別它們。

Workspace conda environment names displayed in the Python interpreter Quick Pick.

支援多級 pytest 類

使用多級 pytest 類時,頂級類現在顯示在測試資源管理器中。以前,只顯示較低級別的類。

測試資源管理器中顯示的多級 pytest 類。 主題:Catppuccin Mocha (在 vscode.dev 上預覽)

Jupyter

為擴充套件作者最終確定 Jupyter 核心執行 API

Jupyter 擴充套件用於針對 Jupyter 核心執行程式碼的 API 已最終確定。擴充套件可以使用 API 針對核心執行程式碼。

API 用法示例可在 Jupyter 核心執行示例中找到。

npm 包 @vscode/jupyter-extension 包含所有 TypeScript 型別定義。

當擴充套件嘗試訪問 Jupyter 核心時,會提示使用者授予或撤銷對核心的訪問許可權。對 Jupyter 核心的訪問許可權由使用者按擴充套件授予。這意味著使用者可以授予擴充套件 A 訪問許可權,並撤銷擴充套件 B 的訪問許可權。

使用者可以透過命令Jupyter:管理對 Jupyter 核心的訪問來管理(授予/撤銷)對 Jupyter 核心的訪問許可權。

GitHub 拉取請求和議題

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

  • 解決當前簽出的 PR 的衝突。
  • 用於問題查詢的 groupBy 屬性。
  • 在簽出的 PR 中單擊永久連結將在編輯器中開啟檔案。
  • 懸停在評論反應上會顯示誰做出了反應。
  • 設定 "githubPullRequests.focusedMode": "multiDiff" 將在簽出時開啟包含 PR 中所有檔案的多差異編輯器。

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

預覽功能

TypeScript 5.4 beta 支援

我們現在支援 TypeScript 5.4 的 beta 版本。請檢視TypeScript 5.4 beta 部落格文章迭代計劃以獲取此版本的詳細資訊。亮點包括:

  • AI 驅動的重構的初步工作。
  • 一個新的 NoInfer intrinsic,可以幫助庫和型別作者停止不正確的型別推斷。
  • 型別細化和型別檢查的改進。

要開始使用 TypeScript 5.4 beta,只需安裝 TypeScript Nightly 擴充套件。請分享反饋,並告訴我們您在使用 TypeScript 5.4 時是否遇到任何錯誤。

快速搜尋改進

在 1.82 版本中,我們引入了快速訪問文字搜尋(“快速搜尋”),它允許使用者從選擇器中進行搜尋。🔎

快速搜尋現在具有以下功能:

  • 在活動選擇上預覽編輯器。在瀏覽時在編輯器上下文中檢視結果。
  • 從快速搜尋到搜尋檢視的更輕鬆導航。選擇輸入旁邊的按鈕或結果以將結果傳輸到搜尋檢視。

主題:Night Owl (在 vscode.dev 上預覽)

提議的 API

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

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

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

測試覆蓋率 API

在此里程碑中,測試覆蓋率的 API 和編輯器內體驗已達到功能完整狀態。我們鼓勵擴充套件作者在 VS Code 1.87 版本中正式釋出之前試用並提供反饋。

儘管 API 篇幅太長無法在此處包含,但我們認為它相當簡單,並歡迎您對問題 #123713中的提議提出意見。

聊天代理 API

我們一直在開發一個 API,以使擴充套件作者能夠將其自己的聊天代理貢獻給 VS Code 中的聊天檢視。我們對 API 進行了一些更改,包括:

  • 傳遞給聊天代理的歷史上下文現在正確地表示了給定訊息呼叫了哪個聊天代理和命令、歷史訊息中變數的值以及結果是什麼。
  • ChatAgentTask 已刪除,現在可以在響應流中間使用 ChatProgressMessage 來覆蓋相同的場景。
  • 所有“slashCommand”相關術語已重新命名為“subCommand”。

如果您想試用該 API,可以從我們的示例聊天代理擴充套件開始,並訂閱問題 #199908以獲取 API 的更新。

程式碼操作高亮 API

對於提取方法或移動到檔案等重構,程式碼操作將應用於哪些程式碼並不總是很清楚。對於像 TypeScript 這樣嘗試智慧地擴充套件使用者當前選擇的語言尤其如此。

此 API 允許程式碼操作提供一個或可能多個它們將應用於的範圍 (Range[])。當用戶懸停或透過程式碼操作列表箭頭移動時,該範圍將被突出顯示。

  • 對於重構,此範圍將是當前檔案中受重構影響的程式碼。
  • 對於快速修復,您可以突出顯示相關的診斷。這已在從 editor.codeActionWidget.includeNearbyQuickFixes 呼叫的快速修復中完成。

問題報告器 API

對提案 API 的少量新增,允許 IssueUriRequestHandlerIssueDataProvider 一起使用。

還改進了 vscode.commands.openIssueReporter 命令,該命令現在可以貢獻額外的擴充套件資料並修改 GitHub 問題指向的 URL。

訂閱問題 #197863以獲取 API 和 openIssueReporter 命令的更新或更改。

評論反應反應器 API

CommentReaction 介面有一個新的 reactors 屬性,因此擴充套件可以指示誰對評論做出了反應。這些 reactors 當前顯示在評論反應的懸停中。

請參閱問題 #201131以跟蹤此 API 的進展。

最終確定的 API

新的 workspace.saveworkspace.saveAs API

新的最終確定的 API workspace.saveworkspace.saveAs 允許擴充套件觸發儲存編輯器的流程,無論是儲存到其資源,還是透過要求使用者提供資源。

所有儲存方法都返回結果 Uri,如果操作被取消,則返回 undefined。無標題檔案將始終要求使用者提供目標,除非已關聯路徑。

FileSystemProvider API 的只讀訊息

使用 registerFileSystemProvider 註冊 FileSystemProvider 時,可以將 options 設定為將整個檔案系統標記為只讀。現在,如果將 isReadonly 選項設定為 MarkdownString,則當用戶嘗試編輯檔案系統中的檔案時,該訊息將顯示在編輯器中。

Example of readonly message showing in the editor.

工程

內務管理

12 月初,我們進行了年度清理。我們在各個儲存庫中淨減少了 1891 個問題。下圖很好地說明了我們年度清理迭代的必要性和影響。

Chart of issue counts over the last years

Markdown 語言服務 0.4 版釋出

Markdown 語言服務包為 VS Code 的內建 Markdown 支援提供支援。新的 0.4 版本捆綁了我們過去半年所做的一些改進,其他工具和編輯器也可以從中受益。以下是一些亮點:

  • 為 Markdown 中的 HTML 片段啟用文件連結、引用和重新命名。
  • 修復正則表示式中潛在的災難性回溯。
  • 避免在補全中新增額外的編碼。
  • 使用模糊匹配進行工作區符號搜尋。
  • 修復了一些連結檢測/驗證方面的問題。

新的 localize2 函式,使建立 ILocalizedString 更加容易

在 VS Code 的核心程式碼庫中,我們使用一種名為 ILocalizedString 的型別來並排呈現本地化字串和英文字串。如果您使用語言包並開啟命令面板,您可能已經見過這種情況。

以前,我們必須像這樣編寫這些表示式:

const str = { value: localize('id', 'Hello World'), original: 'Hello World' };

現在可以表示如下:

const str = localize2('id', 'Hello World');

然後,我們的本地化管道將識別這些 localize2 出現。

Electron 27 更新

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

Linux 最低要求更新

在此里程碑中,我們更新了用於構建桌面客戶端的工具鏈。從該版本開始,VS Code 桌面版僅相容基於 glibc 2.28 或更高版本以及 glibcxx 3.4.25 或更高版本的 Linux 發行版,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。

如果您無法升級您的 Linux 發行版,建議的替代方案是使用我們的網頁客戶端。如果您想使用桌面版本,則可以下載 VS Code 1.85 版。根據您的平臺,請確保停用更新以保留在該版本。一個好的建議是使用便攜模式進行安裝。

值得注意的修復

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-flake8 的貢獻

vscode-hexeditor 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

node-jsonc-parser 的貢獻