🚀 在 VS Code 中

2024 年 1 月 (版本 1.86)

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

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

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

歡迎使用 Visual Studio Code 2024 年 1 月發行版本。此版本包含許多更新,我們希望您會喜歡,以下是一些主要重點

如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的更新

搶先體驗版: 想盡快試用新功能嗎?您可以下載每夜建置的搶先體驗版組建,並在最新更新可用時立即試用。

協助工具

警示

螢幕閱讀器和點字使用者現在有更多可設定的警示,例如在偵錯中斷點命中時、目前行是否有錯誤等。這些可以透過以 accessibility.alert 開頭的設定進行設定,或使用說明:列出警示命令探索和設定。

使用「Hey Code」語音指令

透過新的 accessibility.voice.keywordActivation 設定,您可以啟用 VS Code 來監聽「Hey Code」語音指令,以開始與 Copilot Chat 的語音工作階段。語音辨識是在您的機器本機計算的,絕不會傳送到任何伺服器。

可用的選項為

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

以下範例顯示設定為 inlineChat 選項的「Hey Code」

當 VS Code 使用麥克風辨識「Hey Code」時,狀態列中的小型麥克風圖示會發出訊號。

語音聊天工作階段完成後,VS Code 將再次監聽「Hey Code」以再次啟動它。

若要使用此新功能,需要下列擴充功能

注意:語音辨識在本機電腦上執行,絕不會傳送到任何伺服器。

工作台

還原輔助視窗

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

樹狀檢視中的黏性捲動

在編輯器中黏性捲動成功的基礎上,我們已將此功能擴展到所有樹狀檢視,讓使用者可以更輕鬆地瀏覽專案樹狀結構。可以使用 workbench.tree.enableStickyScroll 設定啟用或停用樹狀檢視的黏性捲動。

為了確保黏性捲動不會佔用太多空間,它限制為檢視高度的 40%。此外,使用者可以透過設定 workbench.tree.stickyScrollMaxItemCount 自訂黏性元素的數量上限,預設值為 7。如果黏性元素超出可顯示的數量,如果樹狀檢視支援此功能,黏性捲動將會將最後的黏性元素合併在一起。

為了改善樹狀結構導覽體驗,您可以選取黏性元素以直接跳到樹狀結構中的元素。或者,按下父元素的 Chevron 以隱藏其所有子元素。此外,啟用黏性捲動後,更易於存取核取方塊和動作項目。

設定每個視窗的縮放層級

新的設定 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 將自動儲存限制為僅適用於工作區內的檔案。

允許停用每個擴充功能的通知

我們現在提供更細緻的控制項,可停用來自擴充功能的通知。從通知快顯視窗中,您可以停用擴充功能的通知

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.

在差異編輯器中檢閱多個檔案

在此版本中,多重差異編輯器現在已針對所有使用者啟用。多重差異編輯器可讓您在一個可捲動的檢視中檢視多個檔案的變更

目前,多重差異編輯器可用於檢閱本機變更、已暫存的變更、傳入/傳出變更、Stash 和提取要求的變更。可以透過選取各種新的檢視變更動作來開啟它,這些動作可以透過多檔案差異圖示來辨識。

當從原始檔控制檢視開啟差異編輯器時,它會在檔案變更或暫存時動態更新檢視。

多重差異編輯器仍在開發中,因此預期在即將發行的版本中會看到更多改進和錯誤修正。

GitHub 提取要求擴充功能中的多檔案差異

安裝GitHub Pull Requests and Issues擴充功能後,您可以設定 "githubPullRequests.focusedMode": "multiDiff",以便在開啟提取要求時自動開啟多檔案差異編輯器。

當您設定 github.dev 時,您可以按下 GitHub 上提取要求上的 .github.dev 會開啟多檔案差異編輯器以檢閱變更。

編輯器

貼上 text/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:合併... 命令將會顯示快速選取控制項,其中列出分支和標籤。

檢視 Stash 命令

我們新增了一個新的命令 Git:檢視 Stash...,讓使用者可以在多檔案差異編輯器中檢視儲存庫中的任何 Stash。檢視 Git Stash 時,編輯器標題功能表將包含套用/彈出或捨棄 Stash 的動作。

使用 SSH 金鑰簽署提交

在此里程碑中,我們新增了使用具有密碼的 SSH 金鑰簽署提交的功能。使用 SSH 金鑰簽署提交時,VS Code 會在畫面頂端顯示快速選取控制項,以提示輸入密碼。VS Code 不會快取密碼,每次簽署提交時都會提示輸入密碼。

筆記本

浮動視窗支援

筆記本編輯器現在可以在浮動視窗中開啟。您可以將筆記本索引標籤拖曳出主視窗,以在新視窗中開啟它,或使用檢視:將編輯器移至新視窗命令。

內建變數檢視

我們已在執行和偵錯檢視中新增實驗性變數檢視,可用於檢視筆記本核心的變數 (如果擴充功能提供這些變數)。可以使用此設定啟用此功能

"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 Speech擴充功能。

工作

路徑分隔符變數的簡寫

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

偵錯

觸發式中斷點

您現在可以設定在中斷點命中另一個中斷點後自動啟用的中斷點。例如,當診斷僅在特定前提條件之後發生的程式碼中的失敗案例時,這會很有用。觸發式中斷點適用於所有語言,條件式中斷點也可用作觸發。

可以透過以滑鼠右鍵按一下字元邊界、選取新增觸發式中斷點...,然後選擇哪個其他中斷點啟用此中斷點來設定觸發式中斷點。

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

工作階段結束時關閉唯讀檔案

連接到偵錯工具時,可能會有磁碟上不存在的內部或虛擬原始檔,這些檔案會以唯讀方式開啟。有一個新的設定 debug.closeReadonlyTabsOnEnd,可讓 VS Code 在工作階段結束時自動關閉從偵錯工作階段開啟的任何唯讀檔案。

測試

更多執行測試的方式

按住 Alt 並按一下測試裝飾項目,現在會在可用的情況下以偵錯模式執行該測試。

現在檔案總管檢視中有內容功能表動作,可用於執行在檔案或資料夾中宣告的所有測試。

擴充功能作者的已完成 TestRunProfile.isDefault/onDidChangeDefault API

先前,TestRunProfile.isDefault 僅控制測試執行設定檔的初始預設狀態,且在該點之後從未變更或讀取。

在此版本中,使用者變更其選取的設定檔將反映在 TestRunProfile.isDefault 屬性中,並觸發對應的 TestRunProfile.onDidChangeDefault 事件。同樣地,當擴充功能變更 isDefault 時,這會導致 UI 中選取的設定檔更新。

語言

想要將您複製的連結轉換為 Markdown 連結嗎?當您將 URL 貼到已選取文字的 Markdown 檔案中時,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 或 遠端通道的遠端機器,或 Windows Subsystem for Linux (WSL) 作為功能完善的開發環境。

重點包括

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

您可以在遠端開發版本資訊中深入瞭解這些功能。

擴充功能貢獻

GitHub Copilot

現在可以使用設定 editor.inlineSuggest.fontFamily 變更內嵌建議的字型系列。

在儲存前確認內嵌聊天

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

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

啟用此設定後,檔案儲存將會等待使用者接受或捨棄任何擱置中的內嵌聊天工作階段。這也適用於啟用自動儲存的情況,在內嵌聊天結束之前,自動儲存將暫時停用。

按住說話模式

不久前,我們將語音支援新增至 VS Code。安裝VS Code Speech擴充功能,這會為聊天輸入欄位新增語音轉文字支援。

對於內嵌聊天,我們現在新增了「按住說話」,其運作方式如下

  • 按下 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. 如果沒有選取範圍,則會包含使用中編輯器可見檢視區中的程式碼範圍

我們發現,當您想要提出一般問題時,第二種類型可能會導致混淆,但 LLM 會將其解讀為關於程式碼編輯器中包含的程式碼的問題作為內容。我們正在實驗預設不包含檢視區中的程式碼,而僅包含選取的程式碼。

當然,您通常會想要詢問您可以在編輯器中看到的程式碼,因此我們新增了一個新的內容變數 #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 Debugger 擴充功能現在會與 Python 擴充功能一併安裝。

Python Debugger 擴充功能旨在將偵錯功能從主要的 Python 擴充功能中分離出來,以防止相容性問題。這確保即使 Python 擴充功能停止支援舊版 Python(例如 Python 3.7),您仍然可以使用這些版本繼續偵錯專案,而無需降級您的 Python 擴充功能。它還提供平台專用的組建,確保您只收到與您的特定作業系統相關的組件,從而減少下載時間和不必要的額外負荷。

這個新的擴充功能複製了主要 Python 擴充功能中提供的所有功能,甚至更多。

為了確保您使用的是新的 Python Debugger 擴充功能,請將您 launch.json 組態檔案中的 "type": "python" 替換為 "type": "debugpy"。未來,Python 擴充功能將不再提供偵錯支援,我們將把所有偵錯支援轉移到 Python Debugger 擴充功能以實現所有偵錯功能。

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 Kernel Execution API

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

API 用法的範例可以在 Jupyter Kernel Execution Sample 中找到。

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

當擴充功能嘗試存取 Jupyter 核心時,系統會提示使用者授與或撤銷對核心的存取權限。使用者會針對每個擴充功能授與 Jupyter 核心的存取權限。這表示使用者可以授與擴充功能 A 的存取權限,並撤銷擴充功能 B 的存取權限。

使用者可以透過Jupyter: 管理 Jupyter 核心的存取權限命令,針對每個擴充功能管理(授與/撤銷)Jupyter 核心的存取權限。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 擴充功能取得了更多進展,此擴充功能可讓您處理、建立和管理提取要求和問題。新功能包括

  • 解決目前已簽出 PR 的衝突。
  • 問題查詢的 groupBy 屬性。
  • 在已簽出的 PR 中按一下永久連結,將會在編輯器中開啟檔案。
  • 將滑鼠停留在註解反應上會顯示誰做出了反應。
  • 設定 "githubPullRequests.focusedMode": "multiDiff" 將會在簽出時開啟多重差異編輯器,其中包含 PR 中的所有檔案。

檢閱擴充功能 0.80.0 版本的變更記錄,以了解其他重點。

預覽功能

TypeScript 5.4 beta 支援

我們現在支援 TypeScript 5.4 的 beta 版本。查看 TypeScript 5.4 beta 部落格文章iteration plan,以了解此版本的詳細資訊。重點包括

  • AI 驅動重構的初步工作。
  • 新的 NoInfer intrinsic,可以協助程式庫和類型作者停止不正確的類型推斷。
  • 改進了 類型精簡和類型檢查。

若要開始使用 TypeScript 5.4 beta,只需安裝 TypeScript Nightly 擴充功能。請分享意見反應,並告知我們您是否遇到任何關於 TypeScript 5.4 的錯誤。

快速搜尋改進

在 1.82 版中,我們推出了 快速存取文字搜尋(「快速搜尋」),讓使用者可以從選擇器中搜尋。🔎

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

  • 在作用中選擇器上預覽編輯器。在瀏覽時,在編輯器的上下文中查看結果。
  • 更輕鬆地從快速搜尋導覽至搜尋檢視。選取輸入旁邊或結果旁邊的按鈕,將結果傳輸到搜尋檢視。

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

建議的 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 太過冗長而無法在此處包含,但我們相信它相當簡單明瞭,並且歡迎您在 issue #123713 中提供關於建議的意見。

聊天代理程式 API

我們一直在開發 API,讓擴充功能作者可以將自己的聊天代理程式貢獻到 VS Code 中的聊天檢視。我們對 API 進行了一些變更,包括

  • 傳遞給聊天代理程式的歷史記錄內容現在正確地表示給定訊息調用了哪個聊天代理程式和命令、歷史記錄訊息中變數的值,以及結果是什麼。
  • ChatAgentTask 已被移除,現在可以在回應串流的中間使用 ChatProgressMessage 來涵蓋相同的場景。
  • 所有與「slashCommand」相關的術語都已重新命名為「subCommand」。

如果您想試用 API,您可以從我們的 範例聊天代理程式擴充功能 開始,並訂閱 issue #199908 以取得 API 的更新。

程式碼動作醒目提示 API

對於諸如「提取方法」或「移動到檔案」之類的重構,動作將套用到哪些程式碼並不總是清楚的。對於像 TypeScript 這樣的語言來說尤其如此,它們會嘗試智慧型地擴展使用者目前的選取範圍。

此 API 允許程式碼動作提供一個或多個可能套用的範圍(Range[])。當使用者將滑鼠停留在程式碼動作清單上或在其中使用箭頭鍵瀏覽時,範圍將會醒目提示。

  • 對於重構,此範圍將是目前檔案中將受重構影響的程式碼。
  • 對於快速修正,您可以醒目提示相關的診斷。這已經在從 editor.codeActionWidget.includeNearbyQuickFixes 叫用的快速修正中完成。

問題回報器 API

對建議 API 的小幅新增,允許 IssueUriRequestHandlerIssueDataProvider 一起使用。

也改進了 vscode.commands.openIssueReporter 命令,現在可以貢獻額外的擴充功能資料,並修改 GitHub 問題導向的 URL。

訂閱 issue #197863 以取得 API 和 openIssueReporter 命令的更新或變更。

註解反應反應器 API

CommentReaction 介面有一個新的 reactors 屬性,以便擴充功能可以指示誰對註解做出了反應。這些 reactors 目前顯示在註解反應的懸停提示中。

請參閱 issue #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 Language Service 0.4 版本

Markdown Language Service 套件 為 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。我們要感謝所有在 Insiders 組建上進行自我託管並提供早期意見反應的人。

Linux 最低需求更新

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

如果您無法升級您的 Linux 發行版,建議的替代方案是使用我們的 web client。如果您想使用桌面版本,則可以下載 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