🚀 在 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 引數從命令列更新擴充功能。這會將所有已安裝的擴充功能更新到其最新版本。

快速選取中的 hover 現在使用自訂 hover

我們已將「快速選取」中的多個 hover 移至使用自訂 hover 而非原生轉譯。這可實現更豐富的轉譯和產品之間更一致。

Quick Pick hover rendered with custom hover instead of native.

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

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

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

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

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

GitHub Pull Requests 擴充功能中的多檔案差異

安裝 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,與先前的文法相比,它維護得更積極。

遠端開發

遠端開發擴充功能可讓您使用 Dev Container、透過 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.

新增「清除所有工作區聊天記錄」命令

每次您使用 + 按鈕開始新的聊天時,您之前的聊天記錄都會儲存在您的工作區聊天記錄中,您可以透過聊天檢視標題中的時鐘圖示來存取。為了方便起見,我們新增了清除所有工作區聊天記錄命令,以清除您過去的所有聊天記錄。

Commit 訊息語言

現在,產生 git commit 訊息的程式碼會使用 github.copilot.chat.localeOverride 設定,以特定語言產生 commit 訊息。

要求私人儲存庫的額外權限

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

Modal window asking for additional authentication for a private repository.

Python

預設安裝 Python Debugger 擴充功能

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 擴充功能取得了更多進展,可讓您處理、建立和管理 pull request 和 issue。新功能包括

  • 解決目前簽出的 PR 的衝突。
  • issue 查詢的 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 叫用的快速修正中完成。

Issue Reporter API

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

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

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

留言反應 reactor 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 個 issue。下圖很好地說明了我們年度內部整理迭代的必要性和影響。

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 的貢獻者。

Issue 追蹤

對我們的 issue 追蹤的貢獻

Pull request

vscode 的貢獻

vscode-flake8 的貢獻

vscode-hexeditor 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

node-jsonc-parser 的貢獻