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

2024 年 3 月 (版本 1.88)

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

下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | 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 設定停用此行為。

我們還在輔助功能幫助對話方塊中添加了有關差異編輯器:切換側邊(一個對鍵盤使用者有用的命令)的資訊。

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

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

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

其中包括聊天:在游標處插入聊天:插入到終端聊天:插入到新檔案

筆記本單元格 aria 標籤更新

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

工作臺

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

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

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

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

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

您可以透過在 workbench.editor.customLabels.patterns 設定下新增條目來自定義這些標籤。每個條目應包括一個與檔案路徑匹配的全域性模式和一個定義編輯器選項卡新名稱的模板。此自定義僅在檔案路徑與指定模式匹配時應用。模式是否匹配取決於它是否定義為相對或絕對檔案路徑模式。

模板可以包含變數,例如 ${filename}${extname}${dirname}${dirname(N)},它們將根據檔案路徑中的值進行動態替換。

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

鎖定滾動

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

如果您想更精確地控制啟用和停用鎖定滾動,您可以選擇僅在按住特定鍵繫結時啟用滾動同步。為 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 設定,以確定單點選搜尋編輯器條目時發生什麼。目前,該設定僅支援開啟窺視定義。

快速搜尋改進

粘性檔案路徑

在快速搜尋中,我們使檔名分隔符具有粘性,以更清楚地顯示搜尋結果與哪個檔案相關聯。當檔案中出現大量搜尋詞時,這會很有用。

檔案路徑分隔符按鈕

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

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

我們收到了反饋,希望能夠在快速選擇中導航分隔符。在此迭代中,我們添加了一個鍵繫結來完成此操作。在 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 或開發容器等遠端伺服器時,您仍然需要重新載入窗口才能更新擴充套件。

隨 VS Code 更新擴充套件

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

跳轉到評論回覆

“評論”檢視中評論執行緒的上下文選單現在包含“回覆”操作,當評論執行緒允許回覆時。這使您可以快速跳轉到回覆輸入框並開始鍵入回覆。

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) 也會在工作臺中開啟重構預覽面板。

差異編輯器暫存/還原選擇按鈕

差異編輯器現在有一個單獨的行號區域用於暫存還原控制元件。這些操作使您能夠暫存或還原更改的程式碼塊。

如果您對某些更改執行文字選擇,這些按鈕允許您暫存或還原所選更改(選擇中所有更改的字元)。

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

原始碼管理

傳入更改檔案裝飾

為了幫助避免在合併/rebase 遠端更改時可能出現的衝突,我們現在為所有具有傳入更改且已獲取但尚未合併/rebase 的檔案顯示檔案裝飾。要從該功能中受益,您應該同時啟用 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 整合支援的執行最近命令 (⌃⌥R (Windows, Linux Ctrl+Alt+R)) 現在會盡可能地滾動並顯示該命令上次執行的時間。執行該命令或取消快速選擇會將終端返回到其先前的狀態。

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

開啟檢測到的連結命令 (⇧⌘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

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

  • 檔案 路徑:行:列

終端粘性滾動透明度支援

終端中的粘性滾動現在支援透明度。主題可以透過將 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 帶來了原生覆蓋率支援。如果您的測試系統支援,您可以使用新的執行覆蓋率按鈕獲取覆蓋率

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

同樣,還有新的鍵繫結用於執行覆蓋率,例如 Ctrl+; Ctrl+Shift+A 用於執行所有測試並帶覆蓋率,以及 Ctrl+; Ctrl+Shift+L 用於執行最後一套測試並帶覆蓋率。

預設情況下,覆蓋率資訊顯示為行號上的覆蓋層,但您可以切換內聯覆蓋率以檢視原始檔的完整詳細資訊

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

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

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

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

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

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

語言

TypeScript 5.4

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

當您將影像或檔案拖放或貼上到 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+.)) 會跳轉到該錯誤的快速操作選單。診斷僅在語言模型可用以提供快速操作時顯示。

在章節中執行單元格

為了更輕鬆地在筆記本中執行相關單元格,您現在可以使用在章節中執行單元格操作執行按 Markdown 章節標題分組的單元格。此操作在筆記本大綱檢視和粘性滾動元素中可用。

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

大綱檢視中的篩選器支援

您現在可以在筆記本大綱檢視中使用篩選器,這使您可以控制 Markdown 標題、程式碼單元格和程式碼單元格符號的包含。篩選器對應於以下設定

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

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

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

遠端開發

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

亮點包括:

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

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

對擴充套件的貢獻

VS Code Speech

延遲啟用

VS Code 語音擴充套件現在僅在 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 則針對建議修復進行了最佳化。此斜槓命令用於使用 Copilot 解釋快速修復或解釋選擇操作。

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

次要聊天提交操作

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

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

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 偵錯程式擴充套件會在工作區的根目錄或下一級子目錄中查詢 manage.pyapp.py 檔案。對於 Flask,該擴充套件會查詢包含 Flask 應用程式宣告的 wsgi.pyapp.pyinit.py 檔案(例如,app = Flask())。

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

Hatch 環境發現

Hatch 環境現在預設被發現和啟用,類似於其他常見的環境,例如 Venv、Conda 和 Poetry。此外,在 Hatch 的情況下,如果沒有註冊明確的環境識別符號,擴充套件能夠從環境定位器確定環境型別 (Hatch)。

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

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

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

報告問題命令改進

PythonPython 偵錯程式擴充套件現在使您更容易向我們的倉庫報告問題!如果您使用報告問題命令 (workbench.action.openIssueReporter) 提交問題,大部分繁重的工作已經完成,您只需提供一些額外的資訊,以便我們的團隊能夠高效地分類您遇到的問題。

要使用幫助:報告問題命令為 @vscode-python@vscode-python-debugger 提交問題,請分別從擴充套件下拉列表中選擇PythonPython 偵錯程式

GitHub 拉取請求

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

  • 過時的評論在“評論”檢視中以不同於當前評論的方式顯示。
  • githubPullRequests.createDefaultBaseBranch 的新 auto 值使用上游的預設分支作為 fork 倉庫的基礎分支。
  • “評論”檢視中的評論執行緒具有內聯操作(解決/取消解決和過時評論的“與 HEAD 比較評論”)和上下文選單操作。

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

Jupyter

單元格執行分析改進

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

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

擴充套件創作

使用“報告問題”命令報告擴充套件錯誤

上一次迭代,我們最終確定了一種讓擴充套件在透過 VS Code 的問題報告器提交到 GitHub 時貢獻額外資料或模板的方法。擴充套件可以貢獻一個命令,可以透過幫助:報告問題...命令訪問。選擇他們的擴充套件會執行他們貢獻的命令。請查閱我們的問題報告文件/發行說明,以瞭解此功能如何與您的擴充套件配合使用!

此外,所有已安裝的擴充套件都可以透過快速開啟快速報告。透過在快速開啟 (⌘P (Windows、Linux Ctrl+P)) 中鍵入 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 然後會在“擴充套件”檢視的工作區建議部分顯示此擴充套件,使用者可以在其中安裝它。VS Code 僅為該工作區安裝此擴充套件。它還要求使用者在安裝和執行此擴充套件之前信任該工作區。

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

Local Workspace Extension

此功能可在 Insiders 版本中透過 extensions.experimental.supportWorkspaceExtensions 進行預覽。請嘗試一下,並透過在 VS Code 儲存庫中建立問題來告訴我們您的反饋。

提議的 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,允許您在 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 的貢獻