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

2023 年 4 月 (版本 1.78)

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

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

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


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

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

輔助功能

Aria 冗餘度設定

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

改進和統一的快速選擇體驗

以前,輔助功能模式的使用者在使用命令面板和其他快速選擇時會遇到不同的行為。在輔助功能模式下,為了完全可訪問,快速選擇的第一個專案未被選中。在此次迭代中,我們引入了新的行為,讓您能兼顧兩全其美:一個可訪問的**並且**快速的快速選擇工作流程,讓您可以立即按 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)) 時,預覽位置,然後再接受轉到新位置的命令。
  • 在動態更新發生時與輸出進行互動。

終端輔助功能幫助選單

終端的 **輔助功能幫助** 選單現在可以使用箭頭鍵導航了。

Diff 編輯器音訊提示改進

VS Code 現在會快取音訊提示,因此只需載入一次,從而提高響應速度,並改進了 diff 編輯器使用的音調。

轉到行/列公告

呼叫 **轉到行/列...** (⌃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_YEAR`、`CURRENT_MONTH`、`CURRENT_DAY_NAME` 等。

Diff 演算法改進

我們繼續改進 VS Code 中的新 Diff 演算法,並棄用了舊演算法。雖然舊演算法仍然是 Diff 編輯器的預設設定,但我們將緩慢將預設值更改為新演算法並衡量其效能。

您可以透過將 `diffEditor.diffAlgorithm` 設定為 `advanced`(新 Diff 演算法)或 `legacy`(預設)來覆蓋預設設定。

在許多情況下,新演算法會產生更好的 Diff,但對於某些文件來說可能會更慢。

這裡有一些示例(舊版 vs. 高階版)

  • 透過考慮縮排來改進行插入 Diff

    JSON file diff result using legacy algorithm

    JSON file diff result using advanced algorithm

  • 透過考慮空格和分隔符字元來改進單詞插入 Diff

    TypeScript imports word insertion diff using legacy algorithm

    TypeScript imports word insertion diff using advanced algorithm

  • 透過最小化 Diff 的長度和塊的數量來實現更自然的 Diff

    TypeScript added line diff using legacy algorithm

    TypeScript added line diff using advanced algorithm

  • 透過將字元級 Diff 擴充套件到整個單詞來減少噪音,如果單詞的一部分發生顯著變化

    TypeScript code change diff using legacy algorithm

    TypeScript code change diff using legacy algorithm

對原始碼進行 Diff 甚至僅僅評估 Diff 的質量都是難題,仍有改進的空間。如果您遇到認為演算法可以做得更好的 Diff,請嘗試我們的Diff Playground,並在我們的問題跟蹤器中分享您的反饋和想法!

內聯補全改進

在此次迭代中,我們重寫了內聯補全功能,並修復了大量錯誤

最值得注意的是,**接受單詞** 現在可以跨行工作,並且有一個新命令 **接受行**。為了支援此功能,接受下一個單詞/行不會再次詢問擴充套件程式,因為內聯補全提供程式擴充套件程式在詢問下一行的內聯補全時通常會報告完全不同的建議。

擴充套件

改進的擴充套件推薦通知

擴充套件推薦通知現在顯示推薦擴充套件的釋出者。這有助於您在安裝擴充套件程式之前做出更明智的決定。以下影像顯示了有單個擴充套件程式和多個擴充套件程式推薦時的通知。

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` 設定啟用此功能。

Notebook

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

您現在可以將影像檔案拖放到筆記本 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 指令碼塊的嚴格空值

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

Strict nulls in a script block

啟用嚴格空值後,懸停和其他 IntelliSense 功能會顯示型別是否可為空。例如,請注意 `el` 現在具有 `HTMLElement | null` 型別。這是因為 `document.getElementById` 在找不到具有該 ID 的元素時返回 null。

測試

現在可以為單個測試啟用連續執行。這需要一個支援連續執行並已採用上一迭代中最終確定的 `supportsContinuousRun` API 的測試擴充套件。

Continuous run button highlighted on an individual test

Web 版 VS Code

將檔案提交到 Git Large File Storage

Git Large File Storage (LFS) 允許您在 Git 儲存庫中高效地儲存大型檔案。github.devvscode.dev 現在支援將檔案提交到 GitHub 上託管的儲存庫中的 Git LFS,從而無需在本地安裝 Git 的 LFS 擴充套件即可從瀏覽器輕鬆更新。

當儲存庫根目錄中已存在用於指定應使用 Git LFS 儲存哪些檔案型別的 `.gitattributes` 檔案時,github.dev 和 vscode.dev 中的 LFS 提交支援即可開箱即用。要首次為 Git LFS 設定您的儲存庫,請參閱Git LFS 文件。

遠端開發

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

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

並檢視 使用 VS Code 隨時隨地開發 VS Code Day 會議。

對擴充套件的貢獻

Python

Jupyter 擴充套件不再預設安裝

Jupyter 擴充套件程式不再預設與 Python 擴充套件程式一起自動安裝。此更改是響應來自Dev Container使用者的反饋而進行的,他們希望在不預設安裝 Jupyter 擴充套件程式的情況下更快地建立容器。

如果您有僅列出 Python 擴充套件程式的 Dev Container 定義,並希望在容器中繼續使用 Jupyter 筆記本功能,您可以將 Jupyter 擴充套件程式 ID 新增到您的 `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` 建立的環境中。

格式化擴充套件推薦

在之前的版本中,我們宣佈了與 Python 擴充套件程式透過語言伺服器協議 (LSP) 配合使用的新的Black Formatterautopep8擴充套件程式,以提供 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-string 的自動轉換

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

此設定的預設值目前是停用的,但在收到積極反饋後,將在即將釋出的版本中啟用。如果您對此功能有任何意見或建議,請隨時在Pylance GitHub 儲存庫上分享。

字串中的程式碼導航已啟用(包含路徑)

還有一個新的實驗性設定 `"python.analysis.gotoDefinitionInStringLiteral"`,它啟用從模組類字串字面量中的**轉到定義**。這在處理 Web 應用程式(如 Django 應用)時很有用,並且您想導航到字串字面量中定義的模組或路徑。

此新設定與前面提到的 `autoFormatStrings` 設定一樣,目前預設停用。但是,我們計劃根據反饋在未來的版本中啟用此行為。最終,我們計劃完全刪除此設定。

Jupyter

重啟命令

Jupyter 擴充套件程式現在包含兩個新命令,使使用者能夠直接重啟核心並執行單元格。這些命令是 **重啟核心並執行所有單元格** 和 **重啟核心並執行直到選定單元格**,分別可以透過命令 ID `jupyter.restartkernelandrunallcells` 和 `jupyter.restartkernelandrunuptoselectedcell` 訪問。

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

在之前的版本中,當連線到遠端 Jupyter 核心會話時,Jupyter 擴充套件程式會等待核心空閒後再連線。如果核心正在忙於執行長時間計算,這可能會花費很長時間。在此版本中,Jupyter 擴充套件程式會立即連線到核心,即使它很忙。這允許您中斷正在執行的核心。

特定於平臺的 Jupyter 擴充套件

Jupyter 擴充套件程式現在提供特定於平臺的擴充套件,每個 VSIX 都針對特定平臺(Windows 64 位、Windows 32 位、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon 等)構建。單個平臺的 Jupyter 擴充套件程式的下載大小更小,從而縮短了下載時間並減少了磁碟空間使用。

GitHub 拉取請求和議題

GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。亮點包括

  • 您可以向拉取請求新增團隊審閱者。
  • 所有可以 **簽出預設分支** 的地方現在都遵守 `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` - 應用更改,但將它們渲染在嵌入式 diff 編輯器中。
  • `preview` - 在斷開連線的嵌入式 diff 編輯器中顯示更改。

命令面板中的類似命令

藉助 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.renameMatchingJsxTags` 和 `typescript.preferences.renameMatchingJsxTags` 來停用此行為。

擴充套件創作

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

`drop into editor 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` 現在可以在 `resolveCodeAction` 中惰性地解析 `CodeAction` 的命令。以前只有程式碼操作的編輯可以惰性地解析。

如果命令的計算成本很高,這允許 `CodeActionProvider` 推遲此工作,直到程式碼操作將被應用。

editor/lineNumber/context menu

我們已經完成了 `editor/lineNumber/context` 選單。這允許擴充套件作者將操作貢獻到錨定在編輯器行號和字形邊距的上下文選單。貢獻到此選單的操作會在命令引數中接收行號,並在它們的 when 子句中引用 `editorLineNumber` 上下文鍵。

身份驗證 API 改進

身份驗證會話首選項現在感知工作區

對於支援同時登入多個帳戶(如 Microsoft)的身份驗證提供程式,當呼叫 `vscode.authentication.getSession` 並設定 `createIfNone: true` 時,系統會提示使用者選擇一個要使用的帳戶。

以前的行為

此首選項會一直保留,直到呼叫 `vscode.authentication.getSession` 並帶有 `ClearSessionPreference` 標誌。

新行為

此首選項每個工作區都會被記住,直到在該工作區中呼叫 `vscode.authentication.getSession` 並帶有 `ClearSessionPreference` 標誌。

引入此行為是為了允許擴充套件程式為不同的工作區使用不同的帳戶,並允許記住這些首選項。

注意:首選項是特定於擴充套件程式的。因此,如果一個擴充套件程式呼叫 `vscode.authentication.getSession`,它不會影響另一個呼叫 `vscode.authentication.getSession` 的擴充套件程式的會話首選項。

桌面版中的 Microsoft 主權雲支援

在此次迭代中,我們在核心產品中引入了一個新的身份驗證提供程式:`Microsoft Sovereign Cloud`。此提供程式用於將使用者身份驗證到Microsoft Cloud for Sovereignty,如 Azure US Government、Azure China 等。其底層工作方式與 `Microsoft` 身份驗證提供程式完全相同,只是 URL 不同。如果您想使用此身份驗證提供程式,您可以引導使用者設定 `microsoft-sovereign-cloud.endpoint` 值,該值有幾個預設值,但也支援自定義主權雲 URL。

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

提議的 API

每個里程碑都會帶來新的提議 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 桌面版中。我們要感謝所有在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 的貢獻者們致以衷心的感謝

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-js-debug 的貢獻

vscode-json-languageservice 的貢獻

vscode-pull-request-github 的貢獻

monaco-editor 的貢獻

devcontainers/cli 的貢獻

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