🚀 在 VS Code 中取得

2023 年 4 月 (版本 1.78)

更新 1.78.1:此更新解決了這個安全性問題

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

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


歡迎使用 Visual Studio Code 2023 年 4 月發行版本。此版本有許多更新,我們希望您會喜歡,其中一些主要重點包括

如果您想在線上閱讀這些發行說明,請前往 更新,網址為 code.visualstudio.com

Insiders: 想要盡快試用新功能嗎?您可以下載每晚組建的 Insiders 組建,並在最新更新可用時立即試用。

協助工具

Aria 詳細程度設定

螢幕閱讀器使用者可以從功能的 aria-label 中排除提示,以透過 "accessibility.verbosity.diff-editor""accessibility.verbosity.terminal" 設定來減少冗餘。

已改進且對齊的快速選取體驗

先前,協助工具模式的使用者在使用命令面板和其他快速選取時遇到不同的行為。在協助工具模式中,未選取快速選取的第一個項目,以便完全可存取。在此迭代中,我們引入了新的行為,讓您可以兼顧兩者:可存取快速的快速選取工作流程,讓您可以立即按下 Enter

注意:此方法的一個缺點是,如果選取了快速選取中的項目,您將無法聽到對快速選取輸入方塊的 ARIA 變更,這是由於 ARIA 限制所致。若要聽到這些變更,您可以按 Shift + Tab,直到未選取清單中的任何項目為止。

終端機

終端機協助工具緩衝區改進

  • 使用 ⌥↓ (Windows、Linux Alt+Down)⌥↑ (Windows、Linux Alt+Up) 在命令之間跳轉。
  • 使用設定選取錨點從錨點選取到游標,以及透過 ⇧PageUp (Windows、Linux Shift+PageUp)⇧PageDown (Windows、Linux Shift+PageDown) 進行頁面導覽。
  • 在使用前往協助工具檢視中的符號 (⇧⌘O (Windows、Linux Ctrl+Shift+O)) 之前,先預覽位置,然後再接受命令以移至新位置。
  • 在發生動態更新時與輸出互動。

終端機協助工具說明功能表

現在可以使用方向鍵導覽終端機的協助工具說明功能表。

差異編輯器音訊提示改進

VS Code 現在會快取音訊提示,因此它們只需要載入一次,從而產生更好的回應能力,並改進用於差異編輯器的音調。

前往行/欄公告

當叫用前往行/欄... (⌃G (Windows、Linux Ctrl+G)) 時,螢幕閱讀器現在會讀取相關聯的行內容。

工作台

新的預設色彩主題

新的「深色現代」和「淺色現代」主題取代「深色 +」和「淺色 +」成為新的預設深色和淺色色彩主題。

Dark Modern and Light Modern color themes

設定檔範本

設定檔可讓您根據目前的專案或工作,快速切換編輯器擴充功能、設定和 UI 版面配置。為了協助您開始使用設定檔,我們推出了 設定檔範本,這些範本是針對不同程式設計語言和案例精心策劃的設定檔。您可以按原樣使用設定檔範本,或將其用作起點,以便進一步自訂以符合您自己的工作流程。

您可以透過設定檔 > 建立設定檔... 下拉式選單選取設定檔範本

Create Profile dropdown with profile templates

選取設定檔範本後,您可以檢閱設定、擴充功能和其他資料,如果您不想將個別項目包含在新設定檔中,可以移除它們。

Profiles view showing the contents of the Data Science profile template

在您根據範本建立新設定檔後,對設定、擴充功能或 UI 所做的變更會持續保存到您的設定檔中。

字形邊界裝飾轉譯改進

本月,我們改進了編輯器邊界中顯示的裝飾轉譯。偵錯相關的裝飾 (例如中斷點和堆疊框架指標) 將永遠轉譯在編輯器行號旁邊。其他裝飾轉譯在任何偵錯相關裝飾的左側。這可讓您即使在同一行上有其他裝飾 (例如測試裝飾或書籤) 的情況下,也能檢視您的中斷點。請注意,按一下尚未限定於個別裝飾。

bookmarks displayed next to breakpoint and stack frame pointer decorations

從影像預覽複製影像

您現在可以使用 ⌘C (Windows、Linux Ctrl+C) 或在預覽中按一下滑鼠右鍵並選取複製,從內建影像預覽複製影像。複製的影像資料可以貼回 VS Code 或其他應用程式中。

編輯器

拖放選取器

VS Code 可讓您透過在拖放前按住 Shift,將檔案和內容拖放到文字編輯器中。在此更新中,我們新增了 UI,讓您可以變更此內容插入檔案的方式。例如,在您將影像拖放到 Markdown 檔案中之後,此控制項可讓您在插入 Markdown 影像、影像的工作區相對路徑和影像的完整路徑之間切換

每當您拖放內容且有多種可能的插入方式時,就會出現拖放選取器控制項。您可以按一下控制項或使用 ⌘. (Windows、Linux Ctrl+.) 來開啟控制項。當您開始輸入或將游標移到插入的文字之外時,拖放選取器就會消失。您也可以使用 "editor.dropIntoEditor.showDropSelector": "never" 完全停用拖放選取器控制項。

VS Code 包含一些內建方式來拖放常見的內容格式。擴充功能也可以使用 DocumentDropEditProvider API 新增自己的拖放選項。

獨立色彩選取器

現在可以啟動獨立色彩選取器,以便插入和取代色彩。若要開啟色彩選取器,請從命令面板選取顯示或聚焦獨立色彩選取器

Standalone color picker control adjusted to blue color

當擴充功能未提供任何色彩或色彩格式時,色彩選取器會回復為 CSS 格式的色彩。現在也可以視覺化所有檔案類型中 CSS 格式色彩的內嵌色彩裝飾項目。若要顯示這些裝飾項目,請啟用編輯器:預設色彩裝飾項目 (editor.defaultColorDecorators) 設定。

時區偏移的新程式碼片段變數

現在可以使用新的程式碼片段變數 CURRENT_TIMEZONE_OFFSET。此變數會以 +HH:MM-HH:MM 格式 (例如 -07:00) 傳回目前的時區偏移。這補充了其他與時間相關的程式碼片段變數,例如 CURRENT_YEARCURRENT_MONTHCURRENT_DAY_NAME 等。

差異演算法改進

我們繼續改進 VS Code 中的新差異演算法,並已淘汰舊演算法。雖然舊演算法仍然是差異編輯器的預設演算法,但我們將逐漸將預設值變更為新演算法,並測量其效能。

您可以將 diffEditor.diffAlgorithm 設定為 advanced (新差異演算法) 或 legacy (預設值) 來覆寫預設值。

新演算法在許多情況下產生更好的差異,但對於某些文件而言,速度可能會較慢。

以下是一些範例 (舊版與進階版)

  • 透過考量縮排來改進行插入差異

    JSON file diff result using legacy algorithm

    JSON file diff result using advanced algorithm

  • 透過考量空格和分隔符號字元來改進字詞插入差異

    TypeScript imports word insertion diff using legacy algorithm

    TypeScript imports word insertion diff using advanced algorithm

  • 透過不僅最小化差異的長度,而且還最小化區塊的數量,來產生更自然的差異

    TypeScript added line diff using legacy algorithm

    TypeScript added line diff using advanced algorithm

  • 如果字詞的一部分發生顯著變更,則透過將字元層級差異延伸到整個字詞來減少雜訊

    TypeScript code change diff using legacy algorithm

    TypeScript code change diff using legacy algorithm

差異原始碼,甚至只是評估差異的品質都是難題,而且仍然有改進的空間。如果您遇到您認為演算法可以做得更好的差異,請試用我們的 差異遊樂場,並在我們的問題追蹤器中分享您的意見反應和想法!

內嵌完成改進

在此迭代中,我們重寫了內嵌完成功能,並修正了 許多錯誤

最值得注意的是,接受字詞現在跨行運作,並且有一個新的命令接受行。為了支援此功能,接受下一個字詞/行不會再次詢問擴充功能,因為內嵌完成提供者擴充功能在要求下一行的內嵌完成時,通常會報告完全不同的建議。

擴充功能

改進的擴充功能建議通知

擴充功能建議通知現在會顯示建議擴充功能的發行者。這可協助您在安裝擴充功能之前做出更明智的決定。以下影像顯示當有單一擴充功能和多個擴充功能的建議時的新通知。

Extension recommendations notification with a single recommendation Extension recommendations notification with multiple recommendations

通知已安裝的已淘汰擴充功能

如果您安裝了已淘汰的擴充功能,您現在會收到通知,告知您此事並建議替代方案。每個已淘汰的擴充功能只會顯示一次。

Notification about deprecated extension

原始檔控制

原始檔控制輸入中的快速修正

原始檔控制訊息方塊現在支援程式碼動作和快速修正

例如,程式碼拼字檢查器擴充功能會將拼字修正新增至原始檔控制輸入。擴充功能可以貢獻其他修正和程式碼動作。

GitHub 存放庫規則集

VS Code 已經可讓您使用 git.branchProtection 設定來定義分支保護。在此里程碑中,我們新增了一個新的實驗性功能,該功能使用最近宣布的 GitHub 存放庫規則集來判斷分支是否受到保護。如果您使用 GitHub 存放庫規則集,您可以使用 github.branchProtection 設定來啟用此功能。

筆記本

將影像檔案拖放到筆記本中以建立附件

您現在可以將影像檔案拖放到筆記本 Markdown 儲存格中以建立附件。當您拖放影像時,請使用 新的拖放選取器控制項來選取將影像插入為附件

Using the drop selector in a notebook Markdown cell

這會將影像新增至筆記本作為附件,而不是僅僅新增影像的連結

An image file added as an attachment

切換筆記本輸出捲動

您現在可以切換個別儲存格,以捲動區域顯示輸出,方法是使用命令筆記本:切換捲動儲存格輸出 (⌘K Y (Windows、Linux Ctrl+K Y)) 或截斷訊息中的連結。

尋找控制項改進

筆記本尋找控制項現在預設會搜尋視覺呈現的關鍵字。使用者可以透過設定 notebook.find.scope 來變更搜尋範圍 (Markdown 原始碼、Markdown 預覽、程式碼原始碼和程式碼輸出)。此外,在取代相符項目時,Markdown 儲存格會轉換為可編輯的儲存格,以便您可以進行取代。完成後,儲存格會轉換回 Markdown,並還原預覽。

語言

將影片拖放到 Markdown 檔案中

想要在 Markdown 中插入影片嗎?只需將其拖曳到編輯器中,然後按住 Shift 以將其拖放到檔案中

這會插入指向影片檔案的 <video> 標籤。您可以從 VS Code 的 [檔案總管] 或本機作業系統拖曳影片。

HTML 中 JavaScript 指令碼區塊的嚴格 Null 值

您現在可以使用 js/ts.implicitProjectConfig.strictNullChecks 設定,為 HTML 指令碼區塊中的 JavaScript 啟用嚴格 Null 值

Strict nulls in a script block

啟用嚴格 Null 值後,當類型可能為 Null 值時,浮動式預覽和其他 IntelliSense 功能會顯示。例如,請注意 el 現在的類型為 HTMLElement | null。這是因為 document.getElementById 在找不到具有該 ID 的元素時會傳回 Null 值。

測試

持續執行現在可以針對個別測試開啟。這需要支援持續執行並採用上一次迭代中完成的 supportsContinuousRun API 的測試擴充功能。

Continuous run button highlighted on an individual test

適用於網頁的 VS Code

將檔案認可至 Git Large File Storage

Git Large File Storage (LFS) 可讓您有效率地將大型檔案儲存在 Git 存放庫中。github.devvscode.dev 現在支援將檔案認可至 GitHub 上託管的存放庫中的 Git LFS,讓您可以從瀏覽器輕鬆更新,而無需在本機為 Git 安裝 LFS 擴充功能。

當您的存放庫根目錄中已經有一個 .gitattributes 檔案,指定應使用 Git LFS 儲存哪些檔案類型時,github.dev 和 vscode.dev 中的 LFS 認可支援可立即運作。若要首次設定您的存放庫以用於 Git LFS,請參閱 Git LFS 文件。

遠端開發

遠端開發擴充功能可讓您使用 開發容器、透過 SSH 或 遠端通道 的遠端機器,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。

您可以在 遠端開發發行說明中瞭解新的擴充功能功能和錯誤修正。

並查看 使用 VS Code 隨處開發 VS Code Day 會議。

擴充功能貢獻

Python

不再預設安裝 Jupyter 擴充功能

預設情況下,Jupyter 擴充功能不再與 Python 擴充功能一起自動安裝。此變更是根據 意見反應,來自 開發容器 使用者,他們希望容器建立過程更快,且預設未安裝 Jupyter 擴充功能。

如果您的開發容器定義僅列出 Python 擴充功能,並且希望繼續在容器中使用 Jupyter 筆記本功能,您可以將 Jupyter 擴充功能識別碼新增至您的 devcontainer.json 檔案

  "customizations": {
    "vscode": {
      "extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
    }
  }

或者,您可以建立包含 Python 和 Jupyter 擴充功能以及任何其他您喜愛的擴充功能的設定檔

使用 microvenv 建立環境命令

當使用未安裝 venv 套件的 Python 發行版本叫用Python:建立環境命令時,Python 擴充功能現在會使用 microvenv 作為後援。這可能是 Unix 型系統上預先安裝的 Python 環境的障礙。

Microvenv 是一個輕量型 Python 模組,提供簡約的方法來為您的 Python 專案建立虛擬環境。它沒有配備像虛擬環境這樣的傳統啟動指令碼,但當您的 Python 發行版本中沒有 venv 模組時,它提供了建立隔離環境的良好替代方案。

建立環境命令也會將 pip 安裝到透過 microvenv 建立的環境中。

格式器擴充功能建議

在先前的發行版本中,我們宣布了 Black Formatterautopep8 的新擴充功能,這些擴充功能透過 語言伺服器通訊協定 (LSP) 與 Python 擴充功能協同運作,以提供 Python 檔案的格式設定。在此發行版本中,如果您仍然使用 Python 擴充功能的內建格式設定功能,我們會顯示通知,提示您安裝這些新的擴充功能。

執行 Python 動作現在位於子功能表中

為了簡化在編輯器上按一下滑鼠右鍵時可用的 Python 命令,在終端機中執行 Python 檔案在 Python 終端機中執行選取範圍/行命令現在是 執行 Python 項目下的子功能表項目。

Run Python option on context menu with "Run file in terminal" and "Run selection/line" options in the submenu

自動轉換 f 字串

有一個新的 "python.analysis.autoFormatStrings" 設定,可在使用 Pylance 時啟用 f 字串的自動轉換。啟用後,當您在引號內插入 { 時,Pylance 會自動在字串開頭插入 f

此設定的預設值目前已停用,但將在即將發行的版本中啟用,等待正面意見反應。如果您對此功能有任何意見或建議,請隨時在 Pylance GitHub 存放庫上分享。

在包含路徑的字串上啟用程式碼導覽

還有另一個新的實驗性設定稱為 "python.analysis.gotoDefinitionInStringLiteral",可從類似模組的字串常值啟用前往定義。如果您正在處理 Web 應用程式 (例如 Django 應用程式),並且想要導覽至字串常值中定義的模組或路徑,這可能會很有幫助

與先前提及的 autoFormatStrings 設定一樣,此新設定目前預設為停用。但是,我們計劃根據意見反應在未來的發行版本中啟用此行為。最終,我們計劃完全移除此設定。

Jupyter

重新啟動命令

Jupyter 擴充功能現在包含兩個新命令,讓使用者可以直接重新啟動核心並執行儲存格。命令為重新啟動核心並執行所有儲存格重新啟動核心並執行到選取的儲存格,並且可以分別透過命令識別碼 jupyter.restartkernelandrunallcellsjupyter.restartkernelandrunuptoselectedcell 存取。

重新連線到忙碌的遠端 Jupyter 核心

在先前的發行版本中,當連線到遠端 Jupyter 核心工作階段時,Jupyter 擴充功能會等到核心閒置後再連線。如果核心正忙於執行長時間運算的計算,這可能需要很長時間。在此發行版本中,Jupyter 擴充功能會立即連線到核心,即使核心很忙也是如此。這可讓您在核心忙碌時中斷核心。

平台特定的 Jupyter 擴充功能

Jupyter 擴充功能現在隨附 平台特定的擴充功能,每個 VSIX 都是針對特定平台 (Windows 64 位元、Windows 32 位元、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon 等) 建置的。個別平台的 Jupyter 擴充功能下載大小較小,從而縮短下載時間並減少磁碟空間使用量。

GitHub Pull Requests and Issues

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

  • 您可以將小組檢閱者新增至提取要求。
  • 所有您可以簽出預設分支的位置現在都遵循 git.pullBeforeCheckout 設定。
  • 支援 GitHub 的檔案層級註解。

檢閱擴充功能 0.64.0 發行版本的變更記錄,以瞭解其他重點。

GitHub Copilot

注意:這些功能可在 GitHub Copilot Chat 擴充功能中使用。

聊天編輯器

我們在 GitHub Copilot Chat 上的第一個迭代啟用了側邊欄中的聊天工作階段。現在,我們支援將相同的聊天檢視開啟為編輯器。這可讓您自訂聊天工作階段的位置,使其位於視窗版面配置中的任何位置。

您可以執行命令互動式工作階段:開啟編輯器來開啟聊天編輯器,然後像對待任何其他編輯器一樣,在編輯器群組之間移動它。

A chat view as an editor

其他程式碼區塊命令

程式碼區塊工具列中有兩個新命令,插入到新檔案在終端機中執行。它們位於現有的命令複製在游標處插入旁邊,並為您提供額外的選項,可快速對 Copilot 傳回的程式碼建議採取行動。

The codeblock toolbar showing the two new codeblock commands

程式碼動作和內嵌聊天

編輯器聊天工作階段現在與快速修正整合。選取波浪線的燈泡,並提供使用 Copilot 修正或說明的選項。

除了程式碼動作之外,現在也可以從編輯器內容功能表中使用內嵌聊天。

內嵌聊天模式

現在有一個設定可以變更內嵌聊天的不同模式:inlineChat.editMode

選項如下

  • live - 直接將 AI 建議的變更套用至編輯器 (預設值)。
  • livePreview - 套用變更,但在內嵌差異編輯器中轉譯它們。
  • preview - 在已中斷連線的內嵌差異編輯器中顯示變更。

命令面板中的類似命令

借助 Copilot 的強大功能,命令面板現在能夠顯示類似的命令結果。若要啟用此功能,您必須擁有有效的 Copilot 訂閱、處於聊天檢視的私人預覽中,並套用設定

"workbench.commandPalette.experimental.useSemanticSimilarity": true

以下是一些範例

  • 「開啟自動儲存」被解譯為切換自動儲存

    query "turn on autosave" is correctly resolved to Toggle Auto Save

  • 「新增函數」在底部包含來自擴充功能的其他結果

    query "add function" including Azure Functions Create Function command

  • 最後,如果您的結果沒有產生任何結果,您可以詢問 GitHub Copilot,這會將篩選方塊中的內容放入新的聊天中,以供 Copilot 處理。

    Ask GitHub Copilot "no results" option in the Command Palette

我們將在此空間中進行迭代,敬請期待!

預覽功能

TypeScript 5.1 支援

此更新包含對即將推出的 TypeScript 5.1 發行版本的支援。請閱讀 TypeScript 5.1 Beta 部落格文章TypeScript 5.1 迭代計劃,以深入瞭解 TypeScript 小組目前正在處理的工作。一些編輯器工具重點

  • JSX 標籤的連結編輯支援。
  • @param JSDoc 標籤的程式碼片段完成。

若要開始使用 TypeScript 5.1 每晚組建,請安裝 TypeScript Nightly 擴充功能。

使用 F2 重新命名相符的 JSX 標籤

當您在 JSX 標籤上觸發重新命名時,VS Code 現在只會重新命名相符的標籤,而不是嘗試更新標籤的所有參考

這需要 TypeScript 5.1 以上版本,並且符合重新命名在 HTML 中的運作方式。

您可以使用 javascript.preferences.renameMatchingJsxTagstypescript.preferences.renameMatchingJsxTags 停用此行為。

擴充功能撰寫

工作區編輯現在可以直接從 DataTransferFile 建立檔案

拖放到文件 API 的主要用途之一是將拖放的檔案/內容寫入工作區。但是在先前的 VS Code 發行版本中,對於大型檔案而言,這可能會相當慢。這是因為檔案內容最終會在程序之間複製兩次:首先從轉譯器複製到擴充功能主機以讀取檔案內容,然後從擴充功能主機複製回轉譯器以寫入檔案。

class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
  async provideDocumentDropEdits(
    _document: vscode.TextDocument,
    _position: vscode.Position,
    dataTransfer: vscode.DataTransfer,
    _token: vscode.CancellationToken
  ): Promise<vscode.DocumentDropEdit | undefined> {
    const pngFile = dataTransfer.get('image/png')?.asFile();
    if (!pngFile) {
      return;
    }

    // Read file
    // This results in the entire file contents being copied over to the extension host.
    const contents = await pngFile.data();

    // Now create a workspace edit that writes the file into the workspace
    // This results in the same file contents from above being copied back again.
    const additionalEdit = new vscode.WorkspaceEdit();
    const path = vscode.Uri.joinPath(
      vscode.workspace.workspaceFolders![0].uri,
      'image.png'
    );
    additionalEdit.createFile(path, { contents });

    const edit = new vscode.DocumentDropEdit(path.fsPath);
    edit.additionalEdit = additionalEdit;
    return edit;
  }
}

現在,您可以透過將 DataTransferFile 直接傳遞給 WorkspaceEdit.createFile 來避免這些額外的複製

additionalEdit.createFile(path, { contents: pngFile });

這應該會大幅提升效能,尤其是在處理較大的檔案時。

在 resolveCodeAction 中解析程式碼動作命令

CodeActionProvider 現在可以延遲解析 resolveCodeActionCodeAction 的命令。先前只能延遲解析程式碼動作的編輯。

如果命令的計算成本很高,這可讓 CodeActionProvider 將此工作延遲到即將套用程式碼動作時。

editor/lineNumber/context 功能表

我們已完成 editor/lineNumber/context 功能表。這可讓擴充功能作者將動作貢獻到錨定至編輯器行號和字形邊界的功能表。貢獻給此功能表的動作會在命令引數中接收行號,並且可以在其 when 子句中參考 editorLineNumber 內容金鑰。

驗證 API 改進

驗證工作階段喜好設定現在可感知工作區

對於支援同時登入多個帳戶的驗證提供者 (例如 Microsoft),當使用 createIfNone: true 呼叫 vscode.authentication.getSession 時,系統會提示使用者選取要使用的帳戶。

先前的行為

此喜好設定會記住,直到使用 ClearSessionPreference 旗標呼叫 vscode.authentication.getSession 為止。

新的行為

此喜好設定會針對每個工作區記住,直到在該工作區中使用 ClearSessionPreference 旗標呼叫 vscode.authentication.getSession 為止。

引入此行為是為了讓擴充功能能夠針對不同的工作區使用不同的帳戶,並讓這些喜好設定得以記住。

注意:喜好設定是擴充功能特定的。因此,如果一個擴充功能呼叫 vscode.authentication.getSession,它不會影響另一個擴充功能呼叫 vscode.authentication.getSession 的工作階段喜好設定。

Microsoft Sovereign Cloud 在桌面環境的支援

在此迭代中,我們在核心產品中引入了一個新的驗證提供者:Microsoft Sovereign Cloud。此提供者用於驗證使用者至 Microsoft Sovereign Cloud,例如 Azure US Government、Azure China 等。其底層運作方式與 Microsoft 驗證提供者完全相同,僅 URL 不同。如果您想使用此驗證提供者,您可以引導使用者設定 microsoft-sovereign-cloud.endpoint 值,該值有一些預設值,但也支援自訂 Sovereign Cloud URL。

請記住,大多數使用者沒有 Sovereign Cloud 帳戶。我們的建議是,如果您想支援 Sovereign Cloud,您應該讓使用者能夠透過 Sovereign Cloud 登入,但不要將其作為主要工作流程的一部分,以免混淆使用者。

建議的 API

每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的回饋。以下是試用建議 API 的步驟

  1. 找到您想試用的提案,並將其名稱添加到 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 並執行 vscode-dts dev。它會將相應的 d.ts 檔案下載到您的工作區。
  3. 您現在可以針對該提案進行程式設計。

您不能發布使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。

格式化多個範圍

DocumentRangeFormattingEditProvider API 有一個可選的建議函數,以支援一次格式化多個範圍。透過採用此 API,提供者可以改善格式化修改範圍的流程,因為只需要向語言服務發送單個請求。

文件拖放中繼資料

這個新提案豐富了現有的拖放到編輯器 API,以支援新的拖放選擇器。提供者可以使用它來提供更好的拖放到編輯器的體驗。

此提案的第一部分為 DocumentDropEdit 新增了一個 label 屬性。這個人類可讀的標籤描述了編輯操作,並顯示在拖放選擇器 UI 中

Labels shown in the drop selector

第二部分為 registerDocumentDropEditProvider 新增了一個額外的 metadata 參數。此中繼資料參數識別提供者,並告知 VS Code 其適用的內容類型

vscode.languages.registerDocumentDropEditProvider(
  'markdown',
  new InsertBase64ImageProvider(),
  {
    // Unique id that identities this provider
    id: 'insertBase64Image',

    // Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
    // You can also use wildcards, such as `image/*` which matches any image content that is dropped.
    dropMimeTypes: ['image/*']
  }
);

dropMimeTypes 陣列可以幫助提高效能,因為您的提供者僅針對相關的拖放內容被調用。

工程

Electron 22 更新

在此里程碑中,我們完成了使用自訂分配器用於擴充功能主機的實驗,並準備將 Electron 22 捆綁到 VS Code Desktop 中。我們要感謝所有在 Insiders 版本上進行自我託管並提供早期回饋的每個人。此更新包含 Chromium 108.0.5359.215 和 Node.js 16.17.1

VS Code Day

您可以透過 VS Code Day 2023 YouTube 播放清單,了解 VS Code Day 的所有亮點。在那裡您會找到關於諸如 GitHub Copilot資料科學TypeScript 等主題的講座,以及 Erich Gamma 和 Kai Maetzel 的 主題演講,他們在其中解釋了團隊如何建置和發布 VS Code。

感謝您

最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。

Issue 追蹤

對我們的 Issue 追蹤的貢獻

Pull Request

vscode 的貢獻

vscode-js-debug 的貢獻

vscode-json-languageservice 的貢獻

  • @zardoy (Vitaly)
    • [completions] 永遠顯示諸如 Default value 之類的詳細資訊 PR #183
    • [completion] 當 uniqueItems: true 時,不要建議重複項 PR #184

vscode-pull-request-github 的貢獻

monaco-editor 的貢獻

devcontainers/cli 的貢獻