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

2024 年 3 月(1.88 版)

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

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


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

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

輔助功能

語音錄製聲音

我們為語音錄製添加了新的輔助功能訊號聲音。

  • 語音錄製開始 - 配置為 accessibility.signals.voiceRecordingStarted 設定。
  • 語音錄製結束 - 配置為 accessibility.signals.voiceRecordingStopped 設定。

改進了差異編輯器輔助功能

如果您正在使用螢幕閱讀器,當差異編輯器成為活動編輯器時,您現在會收到一個通知。您可以使用 accessibility.verbosity.diffEditorActive 設定停用此行為。

我們還將有關 **Diff Editor: Switch Side**(一個對鍵盤使用者有用的命令)的資訊新增到了 輔助功能幫助對話方塊 中。

輔助功能訊號現在可以在差異編輯器的兩側使用。以前,它們僅在修改側可用。

可訪問檢視聊天程式碼塊命令

當您在可訪問檢視中檢查聊天響應時,您現在可以使用聊天檢視中提供的程式碼塊命令和鍵繫結。

這些包括 **Chat: Insert at Cursor**、**Chat: Insert into Terminal** 和 **Chat: Insert into New File**。

筆記本單元格 aria 標籤更新

筆記本單元格的 aria 標籤現在會更新,以指示單元格當前是否正在執行或等待執行。

工作臺

浮動視窗中的自定義編輯器支援

我們已將將編輯器開啟到 浮動視窗 的支援擴充套件到自定義編輯器,以及一般使用 webview API 的所有編輯器。這包括 Markdown 預覽、瀏覽器預覽以及複雜的自定義編輯器,例如我們的 十六進位制編輯器

注意: 由於技術限制,在視窗之間移動基於 webview 的編輯器需要重新載入該編輯器的內容。然後,由編輯器負責恢復您之前累積的狀態。在某些情況下,您的狀態可能會重置,就好像您第一次開啟編輯器一樣。

開啟的編輯器的自定義標籤

我們現在允許您自定義編輯器選項卡和“開啟的編輯器”檢視的顯示標籤。此功能在區分同名檔案的編輯器時非常有用。

您可以透過在 workbench.editor.customLabels.patterns 設定下新增條目來根據您的偏好定製這些標籤。每個條目應包含一個 glob 模式,該模式匹配檔案路徑,以及一個定義編輯器選項卡新名稱的模板。此自定義僅在檔案的路徑與指定的模式匹配時適用。模式是否匹配取決於它是定義為相對還是絕對檔案路徑模式。

模板可以包含變數,例如 ${filename}${extname}${dirname}${dirname(N)},它們會動態替換為來自檔案路徑的值。

要啟用或停用這些自定義標籤,請使用 workbench.editor.customLabels.enabled 設定。這使您能夠隨時切換到原始編輯器名稱,而無需刪除自定義模式。

鎖定滾動

現在,您可以使用 **View: Toggle Locked Scrolling Across Editors** 命令在所有可見編輯器之間同步滾動。這意味著當您在一個編輯器中滾動時,所有其他編輯器都會滾動相同的量,保持一切對齊。如果您需要並排比較檔案,此功能會很有用。

如果您想更精細地控制鎖定滾動的啟用和停用,可以選擇僅在按住特定鍵盤快捷鍵時啟用滾動同步。為 workbench.action.holdLockedScrolling 命令設定鍵盤快捷鍵,您就可以在需要時臨時鎖定編輯器之間的滾動。

活動欄在底部

以前,我們引入了將活動欄移至側邊欄頂部的選項。現在,我們也允許您將活動欄移至底部。為此,請將 workbench.activityBar.location 設定更改為 bottom

我們還改進了活動欄在頂部位置時的外觀和感覺,以確保它與其他介面元素融為一體。

Three screenshots, showing the different Activity Bar positions: on the left side, at the top, and at the bottom

搜尋編輯器單鍵單擊行為

您現在可以配置 search.searchEditor.singleClickBehaviour 設定,以確定單擊搜尋編輯器條目時會發生什麼。目前,該設定僅支援開啟“Peek Definition”。

快速搜尋改進

固定的檔案路徑

在快速搜尋中,我們使檔名分隔符固定,以更清楚地顯示搜尋結果與哪個檔案相關聯。當您在檔案中找到搜尋詞的多個匹配項時,這會很有用。

檔案路徑分隔符按鈕

當您將滑鼠懸停在特定檔案的檔案結果上,或按下向下箭頭鍵到某個結果時,按鈕(例如,開啟檔案的按鈕)也會出現在檔案路徑分隔符上。

快速選擇分隔符導航鍵繫結

我們收到反饋說,能夠在快速選擇中導航分隔符會很好。在本迭代中,我們添加了用於此目的的鍵繫結。在 Windows 和 Linux 上,您可以使用 Alt+Up/Down;在 macOS 上,它是 Cmd+Up/Down。在此示例影片中,您可以看到活動項在

  • 命令面板中的“最近使用”和“其他命令”分隔符。
  • 快速搜尋中的檔案路徑分隔符之間。

快速選擇中停用的複選框項

在本迭代中,我們讓快速選擇顯示已停用項時更加清晰。可以在“管理受信任擴充套件”快速選擇中找到此示例,該快速選擇可用於您登入的任何帳戶。

The Manage Trusted Extensions quick pick with some items disabled

擴充套件更新改進

重啟擴充套件

當擴充套件程式更新時,您現在可以重新啟動擴充套件程式,而無需重新載入視窗。

Restart extensions instead of reloading the window

注意: 當您連線到遠端伺服器(如 WSL、SSH 或 Dev Container)時,仍需要重新載入窗口才能更新擴充套件。

隨 VS Code 更新一起更新擴充套件

當您啟用了 extensions auto update 時,VS Code 現在會更新與可用更新的新版本 VS Code 相容的擴充套件。如果擴充套件的新版本與當前 VS Code 版本不相容,則只有在更新 VS Code 後才會啟用擴充套件的新版本。

跳轉到評論回覆

Comments 檢視中評論主題的上下文選單現在包含一個“Reply”操作(當評論主題允許回覆時)。這使您可以快速跳轉到回覆輸入框並開始鍵入回覆。

Comments view context menu with a Reply action

編輯器

小地圖節標題

小地圖現在可以識別並渲染由摺疊標記定義的節,例如 TypeScript 中的 //#region,或使用 MARK: 的註釋。這使您可以快速掃描和導航大型檔案。

Screenshot that shows folding marker regions defined in the editor in the minimap

重構預覽鍵繫結

我們更新了重新命名符號重構(F2)的預覽編輯的鍵繫結,以保持與其他上下文(如程式碼操作)中的重構預覽一致。您現在可以透過使用 ⌘Enter(Windows、Linux Ctrl+Enter(以前是 Shift + Enter)來預覽編輯。

當滑鼠懸停在程式碼操作上時,⌘Enter(Windows、Linux Ctrl+Enter 也會在工作臺中開啟“Refactor Preview”面板。

差異編輯器暫存/撤銷選擇按鈕

差異編輯器現在有一個用於 **Stage** 和 **Revert**(暫存和撤銷)控制元件的獨立裝訂槽。這些操作使您能夠暫存或撤銷更改的程式碼塊。

如果您對某些更改進行了文字選擇,這些按鈕可以讓您暫存或撤銷選定的更改(選定範圍內所有更改的字元)。

Video that shows the gutter buttons in the diff editor to stage or revert changes

您可以透過將 diffEditor.renderGutterMenu 設定為 false 來隱藏差異編輯器裝訂槽。

重新命名建議行為

我們改進了使用重新命名建議的流程,以匹配快速選擇。當您從列表中選擇一個重新命名建議時,輸入值現在會相應更新,這使您可以進一步修改該建議。

Video of the Rename control that updates the input with the focused rename suggestion

原始碼管理

傳入更改的檔案裝飾

為了幫助避免在從遠端合併/變基更改時可能發生的衝突,我們現在會顯示已傳入更改但尚未合併/變基的所有檔案的檔案裝飾。要從這項功能中受益,您應該同時啟用 git.autofetchgit.decorations.enabled 設定。

Source Control incoming changes file decorators in the explorer view and in the editor tabs

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

終端

除錯終端中的 Shell 整合

為了提供增強的使用者和擴充套件功能,Shell 整合現在在除錯時啟動的終端中自動啟用。

執行最近命令改進

由 Shell 整合支援的 **Run recent command**(⌃⌥R(Windows、Linux Ctrl+Alt+R)現在會滾動到並顯示上次執行該命令的時間(如果可能)。執行命令或取消快速選擇會將終端恢復到其先前狀態。

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

**Open detected link** 命令(⇧⌘O(Windows、Linux Ctrl+Shift+O)現在會在編輯器中預覽連結結果,並在終端中突出顯示連結源。

此外,重複的連結現在已從列表中過濾掉,並且所有連結都以一致的格式顯示。

When 3 yarn.lock links are printed with the same line and column numbers, they will all be merged into a single detected link

單詞連結terminal.integrated.wordSeparators 設定定義,並且是檔案/資料夾/ URI 找不到時的回退。啟用時,這些連結現在包含額外的周圍上下文,以新增用於搜尋的行和列資訊。

請注意截圖中的連結 terminalLinkParsing 已被選中,但結果搜尋也包括了連結後面的行號。

Activating a "terminalLinkParsing" link when followed by "line 24" will include the 24 line number in the search

現在可以在終端中檢測到以下連結格式,即使路徑包含空格

  •  FILE  path:line:column

終端固定滾動透明度支援

終端中的固定滾動現在支援透明度。主題可以透過將 terminalStickyScroll.background 主題顏色配置為透明值,或在 settings.json 中指定覆蓋來實現。例如

{
  "workbench.colorCustomizations": {
    "[Default Dark Modern]": {
      "terminalStickyScroll.background": "#181818c0"
    }
  }
}

這會導致固定的滾動背景透明,允許後面的文字閃耀。

The Sticky Scroll background can now be transparent, allowing the text behind to shine through

測試

測試覆蓋率

在本迭代中,我們完成了測試覆蓋率 API,為 VS Code 帶來了原生覆蓋率支援。如果您的測試系統支援,您可以透過使用新的 **Run With Coverage** 按鈕獲取覆蓋率。

Screenshot showing the Run With Coverage button in the Test explorer view

同樣,也有新的執行覆蓋率的鍵繫結,例如 Ctrl+; Ctrl+Shift+A 用於執行所有帶覆蓋率的測試,以及 Ctrl+; Ctrl+Shift+L 用於執行上次的帶覆蓋率的測試。

預設情況下,覆蓋率資訊會顯示為行號上的疊加層,但您可以 **Toggle Inline Coverage**(切換內聯覆蓋率)以檢視原始碼檔案的完整詳細資訊。

Screenshot showing the Test Coverage view in the Test Explorer view and color overlays in the editor

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

使用測試覆蓋率要求您的擴充套件實現新的 API。一些擴充套件,如 Java 測試執行器node:test runner 已經支援它。在團隊的 十二月一月 更新中瞭解有關 Java 測試覆蓋率的更多資訊。

擴充套件作者可以在 測試 API 文件 中找到有關測試覆蓋率 API 的更多詳細資訊。

測試訊息中的顏色程式碼支援

我們現在會解析終端顏色程式碼,為文字測試訊息(例如測試失敗時顯示的那些)著色,而不是顯示原始的“不可列印”資料程式碼。

語言

TypeScript 5.4

VS Code 現在包含 TypeScript 5.4。此主要更新為型別檢查和 IntelliSense 帶來了新的改進,並修復了多個錯誤。有關更多詳細資訊,請參閱 TypeScript 5.4 釋出博文

當您將影像或檔案拖放到 Markdown 檔案中或貼上到 Markdown 檔案中時,VS Code 會自動為其插入 Markdown 影像或連結語法。我們現在還會在您插入到不支援 Markdown 語法的程式碼塊和其他上下文時智慧地停用此行為。

您始終可以使用拖放/貼上小部件切換回插入 Markdown 語法。您可以使用 markdown.editor.drop.enabledmarkdown.editor.filePaste.enabled 設定來配置此行為。

Notebook

筆記本輸出中的鍵盤快捷鍵

我們現在在筆記本輸出中支援一些標準鍵盤快捷鍵。

  • 輸出可以透過鍵盤分別使用 Ctrl+ACtrl+C 鍵繫結進行選擇和複製。
  • 可滾動輸出可以透過鍵盤分別使用 UpDown 鍵繫結進行滾動。
  • 透過鍵盤可以使用 Ctrl+HomeCtrl+End 鍵繫結滾動到可滾動輸出的頂部和底部(macOS 上為 Cmd+UpCmd+Down)。
  • 透過鍵盤可以使用 Ctrl+Shift+UpCtrl+Shift+End 鍵繫結(macOS 上為 Shift+Cmd+UpShift+Cmd+Down)從當前選擇點到輸出的頂部或底部選擇輸出。

單元格錯誤診斷

擴充套件現在可以為失敗的單元格提供錯誤詳細資訊,以便在單元格內顯示錯誤診斷。當焦點在單元格容器上時,notebook.cell.openFailureActions⌘.(Windows、Linux Ctrl+.)會跳轉到該錯誤的快速操作選單。僅當語言模型可用以提供快速操作時,才會顯示診斷。

執行節中的單元格

為了更輕鬆地執行筆記本中的相關單元格,您現在可以使用 **Run Cells in Section**(執行節中的單元格)操作來執行由 Markdown 節標題分組在一起的單元格。此操作在筆記本大綱檢視和固定滾動元素中可用。

在固定滾動元素中,右鍵單擊您選擇的標題,並透過上下文選單中的操作來執行該節。在大綱檢視中,選擇懸停或選擇時出現的工具欄圖示,然後透過提供的操作執行單個單元格或一系列單元格。

大綱檢視中的篩選支援

您現在在大綱檢視中擁有過濾器,可以控制 Markdown 標題、程式碼單元格和程式碼單元格符號的包含。過濾器對應於以下設定:

  • notebook.outline.showMarkdownHeadersOnly
  • notebook.outline.showCodeCells
  • notebook.outline.showCodeCellSymbols

關閉時提示儲存互動式視窗

透過啟用 interactiveWindow.promptToSaveOnClose 設定,在關閉互動式視窗時會提示您儲存其內容,以確保您不會丟失任何工作。目前唯一支援的檔案格式是 .ipynb

遠端開發

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

亮點包括:

  • 針對具有擴充套件支援的發行版的備用伺服器下載
  • 基於 URI 查詢字串的埠轉發
  • Dev Containers 擴充套件自動啟動 Docker
  • 透過組策略限制對 Dev Tunnels 和埠轉發的訪問

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

對擴充套件的貢獻

VS Code Speech

延遲啟用

VS Code 語音擴充套件 VS Code Speech 現在僅在 VS Code 中請求語音轉文字服務時才啟用。這確保了擴充套件不會對擴充套件主機啟動時間產生負面影響。

使用顯示語言作為預設語音語言

預設情況下,VS Code 語音擴充套件現在使用 VS Code 的顯示語言作為語音語言,並在支援的情況下選擇相應的模型。

對於 accessibility.voice.speechLanguage 設定,auto 是新的預設值。

GitHub Copilot

內聯聊天改進

內聯聊天現在作為浮動控制元件啟動,使其更輕量級。第一次請求後,控制元件會擴充套件以佔用更多空間。我們還調整了渲染,使其與其他聊天體驗(如聊天檢視或快速聊天)更加一致。

內聯聊天作為內容小部件浮動在編輯器文字上主題:GitHub Light Colorblind (Beta)

我們重新定位了重試和反饋控制元件,並使用於檢視差異的切換控制元件與“接受”和“丟棄”按鈕一起更加突出。

Copilot 內聯聊天螢幕截圖,顯示重新定位的控制元件。主題:GitHub Light Colorblind (Beta)

筆記本核心狀態作為上下文

當您在筆記本中時,核心狀態(例如,變數和可用包)現在會自動作為上下文包含在內聯聊天中。這使 Copilot 可以使用筆記本的當前狀態來提供更相關的補全。

主題:GitHub Dark

提交訊息生成改進

為了提高生成提交訊息的質量,我們現在還包括儲存庫中最近 10 次提交的提交訊息,以及當前使用者最近 10 次提交的提交訊息作為額外上下文。

工作區建立改進

當檢測到與聊天提示匹配的合適專案時,@workspace /new 命令現在會提供來自 GitHub 儲存庫的精選示例專案作為建議。

Chat view with @workspace /new that provides a link to a sample project

@workspace /new 命令也得到了增強,以更有效地管理上下文和歷史記錄。這使您可以透過提出後續查詢來最佳化建議的工作區結構和檔案內容。例如,“使用 TypeScript 而不是 JavaScript”或“新增 bootstrap”。

@terminal /explain 斜槓命令

現在有一個新的 @terminal /explain 斜槓命令,它針對解釋命令或錯誤進行了最佳化。沒有 /explain 時,@terminal 旨在建議修復。此斜槓命令用於 **Explain using Copilot**(使用 Copilot 解釋)快速修復或 **Explain selection**(解釋選擇)操作。

Using the explain using copilot quick fix will ask copilot "@terminal /explain #terminalLastCommand"

預覽:終端內聯聊天

此版本中提供了終端內聯聊天的預覽,可以直接在終端中方便地訪問 Copilot 的功能。

您可以使用 terminal.integrated.experimentalInlineChat 設定啟用終端內聯聊天。要在終端中呼叫內聯聊天,請使用 ⌘I(Windows、Linux Ctrl+I 鍵繫結。

Opening terminal inline chat will open and focus an input box similar to inline chat in the editor

終端內聯聊天使用 @terminal 聊天參與者,該參與者擁有有關整合終端的 shell 及其內容的資訊。

You can ask complex questions like "list the top 5 largest files in the src directory"

一旦建議了命令,請使用 ⌘Enter(Windows、Linux Ctrl+Enter 在終端中執行該命令,或使用 ⌥Enter(Windows、Linux Alt+Enter 將命令插入到終端。命令也可以在執行之前直接在 Copilot 的響應中編輯(當前在 Windows 和 Linux 上為 Ctrl+downTabTab;在 macOS 上為 Cmd+downTabTab)。

Complex queries are OS and shell-specific

身份驗證流程清晰化

身份驗證的清晰度非常重要。我們希望清楚地說明我們如何進行身份驗證以及我們要求什麼。如果您在 VS Code 中開啟一個私有儲存庫,而我們沒有正確的身份驗證來處理這種情況,我們會顯示一個身份驗證對話方塊。該對話方塊包含有關為什麼需要身份驗證的說明,以及一個“瞭解更多”按鈕,以瞭解有關這些要求的更多資訊。

Screenshot of a modal window that's asking to authenticate with GitHub and that contains a Learn more button

“瞭解更多”按鈕將引導您到我們關於 身份驗證要求 的文件。

變數引用

聊天響應中的“已用引用”部分提供了有關使用的上下文的資訊。以前,此部分僅顯示隱式引入的上下文。現在,它還顯示您在聊天提示中明確提及的變數,例如 #file#editor。如果在“已用引用”中缺少變數,可能表示它被忽略了,因為它對於語言模型的上下文視窗來說太大了。

Screenshot of a chat response, showing the '#file' variable in the Used references section

二次聊天提交操作

在“聊天”檢視中,聊天提交按鈕現在有一個下拉選單,可以方便地訪問更多操作。

  • **Send to @workspace**(傳送到 @workspace)將您的查詢提交給 @workspace 聊天參與者,這對於有關工作區內容的問題很有用。
  • **Send to New Chat**(傳送到新聊天)會啟動一個新的空聊天,然後提交查詢。

Screenshot of the chat submit dropdown options

使用 Copilot: Explain This 時的範圍選擇

當您在活動編輯器中沒有選擇任何內容而使用 /explain 時,並且存在多個感興趣的範圍,我們已新增支援以提示澄清要解釋哪個符號或塊範圍。

Screenshot of the scope selection quick pick when the scope for /explain is unclear

此行為目前是選擇加入的,位於 github.copilot.chat.scopeSelection 設定後面。

Python

Flask 和 Django 的除錯配置選擇改進

為 Flask 和 Django 應用建立啟動配置變得更加容易!在為 Web 應用建立 launch.json 時,已進行改進以檢測工作區中可能的啟動檔案。

對於 Django,Python Debugger 擴充套件會在工作區的根目錄或下一級子目錄中查詢 manage.pyapp.py 檔案。對於 Flask,擴充套件會查詢包含 Flask 應用宣告(例如,app = Flask())的 wsgi.pyapp.pyinit.py 檔案。

如果專案中找不到這些檔案,下拉選單會顯示相應專案型別的 **Default**(預設)選項,即使該檔案可能不存在。

Hatch 環境發現

Hatch 環境現在預設會被發現和啟用,與其他常見環境(如 Venv、Conda 和 Poetry)類似。此外,對於 Hatch,當未註冊顯式環境識別符號時,擴充套件能夠從環境定位器確定環境型別(Hatch)。

pipenv、pyenv 和 Poetry 專案的自動環境選擇

如果您的工作區包含 pipenv、pyenv 或 Poetry 環境,則相應環境現在會自動為您的工作區選擇。以前,擴充套件能夠正確發現這些環境,但會選擇預設的全域性直譯器,這需要您手動為工作區選擇合適的環境。

現在,Python 擴充套件會根據環境的存在和任何相應的配置檔案來推斷啟用的環境。例如,對於 pyenv,擴充套件會檢視 .python-version 檔案以自動為工作區選擇合適的直譯器。

報告問題命令改進

Python 和 Python Debugger 擴充套件 PythonPython Debugger 現在讓您更容易向我們的儲存庫報告問題!如果您透過 **Report Issue**(報告問題)命令(workbench.action.openIssueReporter)提交問題,大部分繁重的工作已經完成,您只需要提供一些額外資訊,以便我們的團隊能夠有效地分類您遇到的問題。

要使用 **Help: Report Issue**(幫助:報告問題)命令為 @vscode-python@vscode-python-debugger 提交問題,請從擴充套件下拉列表中分別選擇 **Python** 或 **Python Debugger**。

GitHub 拉取請求

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

  • Comments 檢視中的過時評論的顯示方式與當前評論不同。
  • githubPullRequests.createDefaultBaseBranch 的新 auto 值使用上游的預設分支作為分叉儲存庫的基礎分支。
  • Comments 檢視中的評論主題具有內聯操作(resolve/unresolve 和過時評論的“Diff Comment with HEAD”)和上下文選單操作。

請參閱擴充套件的 0.86.0 版的更改日誌,瞭解其他亮點。

Jupyter

單元格執行分析改進

隨著最新的 Pylance 預釋出版,我們對 Jupyter 單元格進行了更好的依賴分析。它現在可以理解模組匯入,這在您有一個匯入在先前單元格中定義的模組的單元格時尤其有用。

要啟用此功能,請在 VS Code Insiders 中安裝最新的 Pylance 預釋出版,並啟用 jupyter.executionAnalysis.enablednotebook.consolidatedRunButton 設定。

擴充套件創作

使用 Issue Reporter 命令報告擴充套件 bug

上一版本,我們最終確定了一種方式,讓擴充套件可以為透過 VS Code 的 Issue Reporter 提交到 GitHub 貢獻額外資料或模板。擴充套件可以貢獻一個命令,該命令可以透過 **Help: Report Issue...**(幫助:報告問題...)命令訪問。選擇他們的擴充套件會執行他們貢獻的命令。請查閱我們的 問題報告文件/釋出說明,瞭解有關此功能如何與您的擴充套件配合使用的更多資訊!

此外,所有已安裝的擴充套件都可以透過 Quick Open 快速報告。透過在 Quick Open(⌘P(Windows、Linux Ctrl+P)中鍵入 issue ,您可以快速選擇或搜尋已安裝的擴充套件進行報告。

某些擴充套件將開始遷移到使用此新的問題報告流程,並且將不再需要直接貢獻到命令面板的自定義 Report Issue... 命令。

預覽功能

終端中重排重疊字形

一個新的設定 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

何時進行重排的規則仍在調整中,我們正在考慮將來在情況穩定時將其設為預設值。如果您嘗試此功能並看到被重排但實際上不應被重排的字元,請 建立問題

本地工作區擴充套件

我們很高興推出這項新的預覽功能,它允許您直接在工作區中打包擴充套件。此功能旨在滿足您特定的工作區需求,並提供更量身定製的開發體驗。

要使用此功能,您需要在工作區內的 .vscode/extensions 資料夾中打包您的擴充套件。然後 VS Code 會在擴充套件檢視的 **Workspace Recommendations**(工作區建議)部分顯示此擴充套件,使用者可以從中安裝。VS Code 僅為該工作區安裝此擴充套件。它還要求使用者在安裝和執行此擴充套件之前信任該工作區。

例如,請考慮 VS Code 儲存庫中的 vscode-selfhost-test-provider 擴充套件 。此擴充套件提供了測試功能,使貢獻者可以直接在工作區中檢視和執行測試。下面的截圖顯示了擴充套件檢視的“工作區建議”部分中的 vscode-selfhost-test-provider 擴充套件以及安裝它的能力。

Local Workspace Extension

此功能在 Insiders 版本中可用,透過 extensions.experimental.supportWorkspaceExtensions 進行預覽。請嘗試使用此功能,並透過在 VS Code 倉庫 中建立 issue 來告訴我們您的反饋。

提議的 API

終端 Shell 整合 API

現在提供了一個新的提議 API,該 API 允許訪問由 Shell 整合啟用的終端提供的一些資訊。透過此 API,可以監聽傳入資料和終端中正在執行的命令的退出程式碼。它還提供了一種更可靠的方式來執行命令,該命令在傳送命令之前會等待提示符可用,這有助於修復在各種 Shell 設定中可能發生的某些衝突/競態條件。

以下是使用 Terminal.shellIntegration.executeCommand 提議的示例

// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidActivateTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
  if (terminal === myTerm) {
    const command = shellIntegration.executeCommand('echo "Hello world"');
    const code = await command.exitCode;
    console.log(`Command exited with code ${code}`);
  }
}));

// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
  if (!myTerm.shellIntegration) {
    myTerm.sendText('echo "Hello world"');
    // Without shell integration, we can't know when the command has finished or what the
    // exit code was.
  }
}, 3000);

以下是監聽命令資料流的示例

// Create a terminal and log all data via console.log
const myTerm = window.createTerminal();
window.onDidStartTerminalShellExecution(execution => {
  if (execution.terminal === myTerm) {
    const stream = execution.createDataStream();
    for await (const data of stream) {
      console.log(data);
    }
  }
});

您可以在 此處 檢視新的 API。

身份驗證 API 的“瞭解更多”屬性

在此次迭代中,我們添加了一個新的提議 API,該 API 允許您在 AuthenticationForceNewSessionOptions 中指定一個 learnMore 屬性。其思路是,如果您使用選項中的 forceNewSession 屬性呼叫 getSession,您可以包含一個 URI,該 URI 將顯示給使用者,以詳細瞭解您請求身份驗證的原因。以下是其外觀示例:

Screenshot of a modal window that's asking to authenticate with GitHub and that contains a Learn more button

以下是程式碼中的外觀

vscode.authentication.getSession('github', ['repo'], {
  forceNewSession: {
    detail: l10n.t('To show you more relevant Copilot Chat results, we need permission to read the contents of your repository on GitHub.'),
    learnMore: Uri.parse('https://aka.ms/copilotRepoScope')
  };
});

您可以在 此處 檢視新的 API。

過時的註釋

新的註釋執行緒 applicability 屬性允許在“註釋”檢視中將註釋執行緒標記為過時

Outdated comment in the Comments view

您可以在 此處 檢視 API 提議。

註釋檢視選單

commentsView/commentThread/context 提議選單允許將操作新增到“註釋”檢視中註釋執行緒的右鍵上下文選單。通常的 inline 組也會被尊重,以便操作內聯顯示在“註釋”檢視中。

Example of an inline action in the Comments view

工程

Electron 28 更新

在此次迭代中,我們將 Electron 28 更新推廣到穩定版使用者。此次更新附帶 Chromium 120.0.6099.291 和 Node.js 18.18.2。我們要感謝所有在 Insiders 版本上進行自我託管並提供早期反饋的人。

值得注意的修復

  • 204886 在簡單檔案選擇器中開啟具有相同名稱但不同路徑的檔案失敗

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-eslint 的貢獻

vscode-extension-samples 的貢獻

vscode-hexeditor 的貢獻

vscode-js-debug 的貢獻

vscode-json-languageservice 的貢獻

vscode-pull-request-github 的貢獻

vscode-pylint 的貢獻

vscode-python-debugger 的貢獻

debug-adapter-protocol 的貢獻

inno-updater 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

node-pty 的貢獻

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