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

2020 年 5 月(版本 1.46)

更新 1.46.1:此更新修復了這些問題

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


歡迎使用 Visual Studio Code 2020 年 5 月版本。

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

輔助功能

在這個里程碑中,我們再次收到了社群的有用反饋,這使我們能夠識別並解決許多輔助功能問題

  • 狀態列現在支援鍵盤導航。當透過聚焦下一部分F6)將焦點放在狀態列時,箭頭導航在狀態列條目之間移動。
  • 為了更輕鬆地使用鍵盤開始和結束選擇,有四個新命令
    • 設定選擇錨點⌘K ⌘B(Windows、Linux Ctrl+K Ctrl+B
    • 從錨點選擇到游標⌘K ⌘K(Windows、Linux Ctrl+K Ctrl+K
    • 取消選擇錨點Escape
    • 轉到選擇錨點
  • 活動欄條目現在具有 tab 角色並設定適當的 aria-expanded 狀態。
  • 編輯器的 Aria 標籤現在正確傳達以下編輯器狀態:pinnedpreviewreadonly

工作臺

靈活的佈局

在多次迭代中,我們宣佈了使佈局更靈活的進展。在此版本中,這組功能已準備好投入通用使用。以下是這些功能的概述。

在側邊欄和麵板之間移動檢視

也許您更喜歡側邊欄中的檢視位於面板中,反之亦然。為此,您現在可以將其標題或整個組的圖示或標題從其當前位置拖動到所需位置。透過鍵盤,可以使用命令檢視:移動檢視workbench.action.moveView)和檢視:移動聚焦檢視workbench.action.moveFocusedView)。

以下是拖動“搜尋”到面板並將“問題”拖動到側邊欄的演示。

Moving Views Between Side Bar and Panel

將“搜尋”拖動到面板,將“問題”拖動到活動欄

主題:GitHub Light

之前有一個設定用於將“搜尋”檢視從側邊欄移動到面板,現在該設定已過時,因為可以使用拖放代替。

分組檢視

您可能還希望將來自不同擴充套件的一些檢視分組在一起,或者您覺得內建檢視的預設組不適合您。您可以將檢視移動到現有組中,或為選定的一組檢視建立新組。這在側邊欄和麵板之間同樣有效。以下是幾個示例。

Moving Timeline from Explorer to Source Control

將“時間軸”檢視從“資源管理器”拖動到“原始碼管理”

Side By Side Debug Console and Watch View

將“監視”檢視從“執行側邊欄”拖動到面板中的“除錯控制檯”旁邊

Custom History Group

在側邊欄和麵板中建立包含“時間軸”和“GitLens”的自定義歷史記錄組

主題:GitHub Light

重置檢視位置

檢視和檢視組可以透過其上下文選單重置為預設位置。當檢視從其預設位置移動時,將有一個條目重置位置將其移回其原始位置。還有命令檢視:重置聚焦檢視位置workbench.action.resetFocusedViewLocation)和檢視:重置檢視位置workbench.action.resetViewLocations)用於將所有檢視和組重置回其預設位置。

對於貢獻檢視或檢視容器的擴充套件作者

當檢視在工作臺周圍移動時,它們有時需要以不同的方式呈現,例如帶有圖示或額外的上下文(如果它們不在預設位置)。在貢獻檢視時,作者現在可以提供一個 icon 屬性和一個 contextualTitle。如果未提供,這些將預設為它們所貢獻的檢視容器的圖示和標題。

最後,擴充套件作者現在可以直接向 panel 貢獻檢視容器,而不是 activitybar,如樹檢視擴充套件指南中所述。

固定選項卡

您現在可以從上下文選單或使用新命令 workbench.action.pinEditor⌘K ⇧Enter(Windows、Linux Ctrl+K Shift+Enter)固定選項卡。

Pin Tabs

主題:GitHub Light

固定選項卡具有許多有用的功能,可幫助標記對您重要的檔案

  • 固定選項卡始終在非固定選項卡之前顯示。
  • 如果您打開了許多選項卡,它們不會滾動出檢視。
  • 使用“關閉其他”等命令時,它們不會關閉。
  • 即使您超出了開啟編輯器的設定限制,它們也不會關閉。

您還可以拖放選項卡以更改固定狀態。

固定選項卡在視覺上會縮小到圖示大小(如果停用了圖示,則會顯示檔名的第一個字母)以節省空間。如果您希望在固定選項卡中看到髒指示器,可以將 workbench.editor.highlightModifiedTabs: true

注意:我們仍在考慮其他呈現固定選項卡的方式。如果您有意見,請隨時在現有問題中分享您的想法,例如顯示輔助選項卡欄或設定以為固定選項卡顯示更多上下文

搜尋編輯器

有幾個用於配置如何建立搜尋編輯器的新選項

  • search.searchEditor.defaultNumberOfContextLines - 配置搜尋編輯器預設顯示多少上下文行。
  • search.searchEditor.reusePriorSearchConfiguration - 建立新的搜尋編輯器時,重用上次活動的搜尋編輯器的配置。
  • 支援在鍵盤繫結引數中傳遞搜尋編輯器配置變數(引數詳細資訊)。

資源管理器自動顯示焦點而不強制滾動

explorer.autoReveal 設定有一個新選項 focusNoScroll。使用此選項時,資源管理器將在開啟檔案時自動選擇檔案,但不會滾動以在資源管理器檢視中顯示它們。

列表和樹的平滑滾動

啟用 workbench.list.smoothScrolling 設定將使缺乏平滑滾動硬體(例如,Windows 上的離散滑鼠滾輪)的列表和樹中的滾動更加平滑。

Smooth scrolling

窗格尺寸配置

您現在可以使用 workbench.sash.size 設定來配置檢視/編輯器之間拖動區域的反饋區域大小(以畫素為單位)。如果您覺得用滑鼠調整檢視大小很困難,請將其設定為更大的值。

截圖模式字型大小

新的 screencastMode.fontSize 設定允許您配置截圖模式中使用的字型大小(以畫素為單位)。

VS Code 現在將允許直接開啟工作區中任何 GitHub 遠端的 URL 連結。此外,如果您已使用 GitHub 登入,則指向 GitHub 配置檔案下所有頁面的連結都將受到信任。

編輯器

已關閉檔案的跨檔案撤消

現在可以跨檔案撤消,即使檔案在此期間已關閉。已編輯的檔案將重新開啟,並且跨檔案操作(例如重新命名符號)將在所有受影響的檔案中撤消。

不尋常的行終止符

VS Code 目前識別 CR(回車)、LF(換行)和 CRLF 作為行終止符。某些程式語言對構成行終止符的定義不同。這因語言而異,例如 LS(行分隔符)和 PS(段落分隔符)在 C# 和 JavaScript 中是行終止符,但在 HTML、PHP 或 Java 中不是。當 VS Code 與語言伺服器通訊時,這些行尾差異可能會導致問題,因為各種概念使用 (line;char) 座標在 VS Code 和語言伺服器之間進行通訊。如果行終止符的定義不同,可能會導致檔案中行和位置的不同對映。

開啟檔案時,VS Code 現在將檢查開啟的檔案中是否存在 LS 或 PS,並提示並請求刪除這些字元的許可權。這些不尋常的行終止符在實踐中很少見,最可能是透過複製貼上意外插入到原始碼中的。

整合終端

上個月的整合終端連結預覽已替換舊的實現。新的連結實現現在支援

  • 透過使用編輯器的連結檢測來改進 Web 和 file:// 連結檢測。
  • 資料夾連結支援,可以在資源管理器中開啟資料夾或開啟新的 VS Code 視窗。
  • 不同連結型別的不同連結操作,回退到搜尋工作區的“單詞”連結(基於 terminal.integrated.wordSeparators 設定)。
  • 與編輯器類似的連結突出顯示和懸停體驗。

Terminal with various links

主題:Topaz (Dim)

任務

繼續最近的任務效能改進,執行構建任務將不再總是向擴充套件請求其任務。如果您在資料夾的 tasks.json 中配置了預設構建任務,執行構建任務將只嘗試解析該任務,而不是在執行預設構建任務之前從所有擴充套件中查詢所有任務。

原始碼管理

在終端中開啟

您現在可以從原始碼管理檢視中的上下文選單在終端中開啟倉庫。

Open in terminal from Source Control view

從 GitHub 新增遠端

您現在可以使用Git:新增遠端...命令將 GitHub 倉庫作為遠端新增到您的本地倉庫。

Use Add Remote Command

釋出到 GitHub 時生成 .gitignore

現在可以在將工作區釋出到 GitHub 時生成 .gitignore 檔案。當將工作區釋出到 GitHub 時,系統會提示您選擇要包含在倉庫中的檔案,未包含的檔案將新增到 .gitignore 檔案中。

Select which files to include in the repository

輸入欄位字體系列

您現在可以使用Scm:輸入字體系列設定自定義原始碼管理輸入欄位中使用的字體系列。該設定支援以下值

  • default - 工作臺使用者介面字體系列。
  • editor - 在編輯器:字體系列設定中指定的字體系列。
  • font family name - 輸入欄位中使用的字體系列的名稱(例如,Cascadia Code)。

中止進行中的 rebase

您現在可以使用Git:中止 Rebase命令中止進行中的 rebase 操作。

除錯

自動除錯配置改進

在這個里程碑中,我們改進了自動除錯配置的體驗

  • 上個里程碑,我們引入了一個功能,以便擴充套件作者可以分析當前專案並自動提供除錯配置。這些除錯配置是動態建立的,因此它們不會出現在 launch.json 配置檔案中。這很好,只要它們開箱即用,但有時您可能需要修改配置,例如新增額外的引數。現在有一個選項可以將自動除錯配置儲存到 launch.json 中,以便開啟它進行編輯。為此,請使用除錯:選擇並開始除錯快速選擇中自動除錯配置末尾的齒輪按鈕

    Selecting Edit automatic debug configuration in launch

  • 現在可以在“執行和除錯”啟動檢視中顯示所有自動除錯配置。

    Automatic debug configs in start view

  • “除錯”下拉列表現在會記住上次選擇的自動除錯配置。

單步執行目標

除錯具有許多巢狀函式呼叫的語句可能會很痛苦,因為您可能必須單步執行您不感興趣的函式。為了改善這種情況,除錯介面卡協議支援“單步執行目標”功能,該功能顯示 UI 以直接單步執行您感興趣的函式。

在這個里程碑中,VS Code 開始使用此功能。當除錯在語句上停止時,上下文選單會顯示一個新操作單步執行目標。此操作會顯示當前堆疊幀中所有可用目標(通常是函式)的列表。選擇其中一個將單步執行該目標。

請注意,每個堆疊幀可以有自己的一組目標。因此,單步執行目標操作的結果取決於“呼叫堆疊”檢視中當前選定的幀。

Step into targets in context menu

目前,只有 Mock Debug 擴充套件具有(偽造的)單步執行目標支援,但很快其他除錯擴充套件也將跟進 - 例如 Julia 偵錯程式。

語言

TypeScript 3.9

VS Code 現在包含 TypeScript 3.9.4。此重要的 TS 更新帶來了一些新的工具功能、效能改進和許多錯誤修復。您可以在 TypeScript 部落格上閱讀有關 TS 3.9 的更多資訊。

CommonJS 自動匯入

如果 VS Code 檢測到您正在使用 CommonJS 風格的 JavaScript 模組,自動匯入現在將使用 require 而不是 import

Auto imports using 'require' in a JS file

重構保留換行符

JavaScript 和 TypeScript 的重構,例如提取到方法移動到新檔案,現在嘗試保留重構原始碼的原始格式。這包括選擇中存在的任何換行符

The 'extract method' refactoring preserving newlines

新增所有缺失的匯入源操作

VS Code 長期以來一直支援一個快速修復,用於新增 JavaScript 或 TypeScript 檔案中所有缺失的匯入。在本次迭代中,我們引入了一個新的新增所有缺失的匯入源操作,允許您從檔案中的任何位置觸發此操作。

Adding imports using a source action

這還允許您為新增所有缺失的匯入設定鍵盤繫結

{
  "key": "ctrl+shift+i",
  "command": "editor.action.sourceAction",
  "args": {
    "kind": "source.addMissingImports",
    "apply": "first"
  }
}

甚至在儲存時啟用新增所有缺失的匯入

"editor.codeActionsOnSave": [
    "source.addMissingImports"
]

工作區中的 JS/TS 轉到符號包括所有開啟的專案

預設情況下,JavaScript 和 TypeScript 的工作區符號搜尋現在搜尋所有開啟的 jsconfigtsconfig 專案。它以前只包括焦點檔案所屬專案中的搜尋結果。

此行為由 typescript.workspaceSymbols.scope 設定控制,並需要 TS 3.9+。要恢復到以前的行為並僅搜尋當前專案,請設定 "typescript.workspaceSymbols.scope": "currentProject"

新增缺失的匯入快速修復現在可以標記為首選

JavaScript 和 TypeScript 的新增缺失的匯入快速修復現在可以標記為錯誤的首選修復。這允許您使用⌥⌘.(Windows、Linux Shift+Alt+.透過一次按鍵新增缺失的匯入。

請注意,只有當存在單個有效匯入時,新增缺失的匯入才會被標記為首選修復。如果您的專案中存在多個潛在匯入,您仍然需要使用正常的程式碼操作選單來選擇要使用的匯入。此外,要在 JavaScript 中啟用新增缺失的匯入快速修復,您必須啟用型別檢查

JSON 離線模式

新設定 json.schemaDownload.enable 允許您控制 JSON 擴充套件是否允許從 httphttps 獲取 JSON 模式。

噹噹前編輯器希望使用無法下載的模式時,狀態列中將出現一個警告三角形。基於模式的功能(如驗證、程式碼完成和懸停)將受到限制。

JSON warning triangle

瀏覽器支援

選項卡標題中的除錯停止指示器

在瀏覽器中除錯擴充套件時,被除錯的擴充套件會顯示在一個新的瀏覽器選項卡中,該選項卡會停用(隱藏)偵錯程式選項卡。當被除錯程式因某種原因停止時,例如命中斷點,我們無法啟用偵錯程式選項卡(因為瀏覽器不提供此 API)。這使得幾乎不可能發現被除錯的擴充套件已停止。

為了緩解這個問題,我們現在更新選項卡標題以包含一個紅色圓形指示器 🔴(類似於斷點)。一旦偵錯程式選項卡被啟用,紅點就會被移除。

Debuggee stopped indicator in web view

從整合終端執行 VS Code

當您在瀏覽器中執行的 VS Code 中開啟整合終端時,您可以鍵入 code 來訪問在瀏覽器中都有效的幾個有用命令。

Terminal Remote

在本次迭代中,我們擴充套件了對許多選項的支援

  • --goto 在特定行開啟檔案
  • --diff 比較兩個檔案
  • --wait 讓程式等待檔案關閉
  • --add 將資料夾新增到當前工作區

例如,在GitHub Codespaces中,這使您能夠將基於瀏覽器的 VS Code 用作 Git 的編輯器

VS Code Git Editor in Browser

主題:GitHub Light

檔案/資料夾上傳

VS Code 允許您將檔案拖放到檔案資源管理器中以進行上傳。在本次迭代中,我們改進了此功能,允許您拖放資料夾以進行上傳,包括所有子資料夾和檔案。由於這可能是一個長時間執行的操作,您將在狀態列中看到進度報告,並且可以在需要時取消操作。

Drag files into File Explorer

帳戶管理

在之前的版本中,我們引入了新的帳戶管理 UI 預覽以及“設定同步”功能的預覽。現在,此 UI 將預設顯示。使用新提議的身份驗證提供程式 API 的擴充套件可以在此處提出登入請求,您可以檢視您的帳戶並管理擴充套件訪問許可權。目前使用此 API 的擴充套件數量有限,我們將在 API 穩定後努力提高採用率。

預覽功能

預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。

設定同步

在過去的幾個月裡,我們一直在努力支援跨機器同步 VS Code 首選項,此功能可在 Insiders 版本中進行預覽。

在此里程碑中,我們增強了對“設定同步”的管理和診斷支援。

同步機器檢視

我們添加了同步機器檢視以顯示同步您的 VS Code 首選項的機器列表。預設名稱根據您正在使用的 VS Code 型別(Insiders 或 Stable)和平臺提供,但您始終可以使用檢視中機器條目上的編輯操作更新名稱。

Synced Machines view

主題:GitHub Sharp with Customizations

您可以使用命令面板中的首選項同步:顯示同步資料命令開啟此檢視。

同步資料檢視

我們對“同步資料”檢視進行了以下增強。

  • 您現在可以看到資料正在從哪臺機器同步。
  • 您可以使用檢視中資料條目上的恢復操作恢復到特定狀態。
  • 您可以使用檢視標題中更多操作...)按鈕下的重置同步資料操作重置雲端資料。

Synced Data view

主題:GitHub Sharp with Customizations

我們現在在開啟同步時提供更多幫助,透過檢查您是否即將與來自不同機器的資料同步,並允許您採取適當的操作。

  • 替換本地 - 將當前機器上的資料替換為雲端同步資料。
  • 合併 - 將當前機器上的資料與雲端同步資料合併。
  • 顯示同步資料 - 開啟“同步資料”檢視以檢視雲端同步資料。

Replace or Merge pop-up

新的 JavaScript 偵錯程式

本月,我們繼續在新的 JavaScript 偵錯程式方面取得進展。自 5 月中旬以來,它已成為 Insiders 上的預設偵錯程式,並在此版本中包含(但預設未啟用)在 VS Code Stable 中。您可以透過啟用 debug.javascript.usePreview 設定來使用它與現有啟動配置。

本月的工作主要集中在完善和穩定現有功能

  • 瀏覽器除錯多選項卡支援:您現在可以在執行瀏覽器或 Webview 時附加到多個選項卡。預設情況下,js-debug 會附加到所有匹配 urlFilter 的選項卡。在附加到瀏覽器時,您可以在啟動配置中設定 "targetSelection": "pick" 以連線到單個選項卡,就像在以前的偵錯程式中一樣。
  • 改進的選項卡消除歧義:除錯會話名稱更準確地消除了多個選項卡的歧義。此外,我們在“呼叫堆疊”檢視中為除錯會話的上下文選單添加了聚焦選項卡操作,您可以使用它來確保您正在檢視正確的頁面。
  • 自動展開 getter 選項:與 Chrome 的行為匹配,當在“變數”檢視或“除錯控制檯”中顯示時,屬性 getter 預設不進行評估。您現在可以透過設定 debug.javascript.autoExpandGetters 選項來配置此行為。
  • webpack 捆綁型別效能改進:某些型別的 webpack 捆綁(使用 eval 源對映構建的那些)在 js-debug 下執行緩慢。現在不再如此。

TS 4.0 每晚構建支援

VS Code 1.46 包含對 TypeScript 4.0 每晚構建的預覽支援。每晚構建包括對我們正在積極開發的一些新工具功能的支援,例如更靈活的重構選擇

您今天可以透過安裝TypeScript Nightly 擴充套件來試用 TypeScript 4.0 每晚構建。請分享反饋,並在您遇到 TypeScript 4.0 的任何錯誤時告知我們。

對擴充套件的貢獻

Notebook

快速大綱

Notebook 擴充套件,例如GitHub Issue Notebooks,現在支援快速大綱。按 kb('workbench.action.gotoSymbol'),或使用轉到編輯器中的符號命令,並檢視當前 Notebook 的所有 Markdown 和程式碼單元格的預覽。

Notebook quick outline preview list

主題:GitHub 主題

錯誤和符號導航

我們改進了 F8查詢所有引用的工作方式。所有程式碼導航手勢都應該像在 Notebook 之外一樣自然。例如,問題檢視現在將顯示所有單元格的所有錯誤,按 Notebook 分組,而不是按單元格分組

Problems panel with errors grouped by notebook

主題:GitHub 主題

合併/拆分單元格

我們引入了兩組命令,供您快速合併單元格或將單元格拆分為更小的片段

Running Join and Split Notebook cells commands

主題:GitHub Dark Theme

保留 Notebook

固定或髒的 Notebook 編輯器現在在工作區中是持久的,因此如果 Notebook 移動到後臺或移動到另一個編輯器組,使用者不會丟失 Notebook 中的工作狀態。

Persisted Notebook

主題:GitHub Dark Theme

統一的撤消/重做堆疊

使用者操作 Notebook 單元格或修改 Notebook 單元格內容現在在相同的撤消/重做堆疊中進行跟蹤。

Show tracking of Unified Undo/Redo stack

主題:GitHub Dark Theme

GitHub 拉取請求和議題

繼續開發GitHub Pull Requests and Issues擴充套件,該擴充套件允許您處理、建立和管理拉取請求和問題。此版本的一些更新包括

  • 問題懸停中改進的標籤。
  • 問題和使用者建議現在僅在評論和純文字中觸發。
  • 新的問題編輯器允許您設定經辦人和標籤。

要了解所有新功能和更新,您可以檢視擴充套件 0.17.0 版本的完整更改日誌

遠端開發

遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

1.46 中的新功能包括

  • Dev Containers:支援 GPG 轉發。
  • Dev Containers:支援檢查 Docker 卷。
  • Dev Containers:新的 devcontainer.json 命令屬性。

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

十六進位制編輯器

隨著自定義編輯器 API 最終確定並支援二進位制編輯器,我們開發了一個十六進位制編輯器擴充套件,以提供本機十六進位制編輯體驗。

Hex Editor

此擴充套件仍在開發中,目前僅支援以十六進位制開啟和導航檔案。我們將繼續致力於導航體驗,然後轉向支援編輯。您可以試用該擴充套件並在vscode-hexeditor 倉庫中提供反饋或提交問題。

擴充套件創作

檔案路徑大小寫

我們修復了 VS Code 在不區分大小寫的檔案系統上處理路徑和 URI 的幾個錯誤。在此版本之前,具有不同大小寫的路徑不會開啟相同的文件,而是開啟單獨的、斷開連線的文件。這種行為經常導致混淆,有時還會導致資料丟失。

但是,在修復這些錯誤時,openTextDocument 函式的行為已更改。該函式現在可以返回一個具有與傳入的 URI 具有不同大小寫的 URI 的文件。這意味著擴充套件應該使用TextDocument#uri 作為事實的來源,而不是它們請求它的 URI。

以下示例說明了新行為

// case-insensitive file system

const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);

const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);

assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());

新的除錯控制檯主題顏色

有新的顏色用於設定除錯控制檯檢視的樣式

  • debugConsole.infoForeground:除錯控制檯中資訊訊息的前景色
  • debugConsole.warningForeground:除錯控制檯中警告訊息的前景色
  • debugConsole.errorForeground:除錯控制檯中錯誤訊息的前景色
  • debugConsole.sourceForeground:除錯控制檯中原始檔名前景色
  • debugConsoleInputIcon.foreground:除錯控制檯輸入標記圖示前景色

新輸入主題顏色

我們還有新的輸入顏色主題選項。您可以透過 inputOption.activeForeground 設定活動輸入選項的前景色。這些顏色出現在“搜尋”檢視和“查詢”小部件(編輯器、終端、除錯控制檯)中。

Input option foreground color

主題:GitHub Dark Theme

新圖示

我們已將以下新圖示新增到我們的codicon庫中

  • server-process
  • server-environment
  • record
  • pass
  • stop-circle
  • play-circle

New available icons

主題:GitHub Dark Theme

提供程式使用泛型型別

我們的 vscode.d.ts 型別現在使所有兩階段提供程式(具有單獨的“提供”和“解析”方法的提供程式)成為泛型。目的是為了更清楚地表明“提供”呼叫中的結果會傳遞迴“解析”呼叫中。

例如,這是 DocumentLinkProvider 的新泛型定義

export interface DocumentLinkProvider<T = DocumentLink> {
  provideDocumentLinks(
    document: TextDocument,
    token: CancellationToken
  ): ProviderResult<T[]>;

  resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}

所有提供程式都具有預設泛型引數,因此此更改不應導致您現有擴充套件的任何錯誤。如果您之前在實現“解析”時使用過強制轉換或型別檢查,請考慮更新您的程式碼以改用泛型提供程式

class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {

  provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }

  resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}

在 Webview 中編寫特定於主題的 CSS

Webview 的 body 元素有一個名為 vscode-theme-name 的新資料屬性,它儲存當前活動主題的全名。這允許您在 Webview 中編寫特定於主題的 CSS

body[data-vscode-theme-name="One Dark Pro"] {
    background: hotpink;
}

請記住,鑑於 VS Code 可用的主題數量,您應該只在特殊情況下編寫特定於主題的 CSS。普通 Webview 應改用 .vscode-light.vscode-dark 類名以及VS Code CSS 變數來編寫適應使用者選擇的任何主題的 CSS。

自定義二進位制編輯器

我們已最終確定了自定義二進位制編輯器的 API。自定義編輯器 API 允許擴充套件建立基於 Webview 的自定義編輯器,這些編輯器可以替換 VS Code 的預設文字編輯器,或者使用者可以切換到這些編輯器。這可用於直接在 VS Code 中預覽資產檔案(例如影像或 3D 模型),或為特定檔案型別構建更專業的編輯介面。透過新的二進位制自定義編輯器 API,您現在還可以為非基於文字的檔案格式構建讀/寫編輯器。

A custom editor for binary files

自定義編輯器擴充套件指南更詳細地介紹了該 API。另請檢視自定義編輯器擴充套件示例,其中包含文字和二進位制檔案格式的自定義編輯器示例。

放鬆 resolveCompletionItem

CompletionItemProvider#resolveCompletionItem 函式允許提供程式延遲用更多資料豐富完成項。此“延遲”資料必須是可選的,並且不得更改完成項的插入行為。擴充套件仍然可以填充 additionalTextEdits,如果附加編輯在完成項插入到達,編輯器仍將嘗試應用它們。請注意,這僅適用於附加編輯,不適用於主要編輯(insertText),主要編輯在提供後不得更改。

onStartupFinished 啟用事件

我們現在有一個新的啟用事件,類似於已經存在的 * 啟用事件。新的 onStartupFinished 啟用事件應該在擴充套件希望在 VS Code 啟動後不久啟用,但不是作為啟動的一部分時使用。

環境變數集合

ExtensionContext.EnvironmentVariableCollection API 現在已穩定,允許擴充套件貢獻到終端環境。

const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');

這些集合是擴充套件和工作區特定的,VS Code 處理多個擴充套件之間的衝突。它們在視窗重新載入後仍然存在,因此在視窗載入後立即建立的終端不會阻塞擴充套件主機啟動,而是使用上次已知版本。這些持久集合透過處置集合或解除安裝擴充套件來刪除。

當集合發生變化時,終端上會出現一個指示器。此指示器是否顯示任何活動變化或僅顯示“過時”終端由 terminal.integrated.environmentChangesIndicator 設定定義。此 API 現在也由內建 Git 擴充套件使用,以使 VS Code 成為身份驗證提供程式。

除錯介面卡協議

新指令斷點

有一個新的“指令”斷點型別,可以實現在記憶體地址上的指令處斷點。記憶體地址以符號形式指定,可選擇從 evaluatevariablesstackTracegotoTargets 請求中獲得。相應的功能 supportsInstructionBreakpoints 指示除錯介面卡是否支援指令斷點。

支援“步進粒度”

已向步進請求 nextstepInstepOutstepBack 添加了一個新的可選 granularity 引數,以控制請求是步進“語句”、“行”還是“指令”。相應的 capability supportsSteppingGranularity 指示除錯介面卡是否支援該功能。

建議的擴充套件 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試使用它們。一如既往,我們希望得到您的反饋。要嘗試提議的 API,您需要執行以下操作:

  • 您必須使用 Insiders 版本,因為提議的 API 經常更改。
  • 您的擴充套件的 package.json 檔案中必須包含以下行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的源位置。

請注意,您不能釋出使用提議 API 的擴充套件。下一個版本中可能會有重大更改,我們絕不希望破壞現有擴充套件。

Git 擴充套件 API

內建的 Git 擴充套件提供了一個 API供擴充套件使用。現有的 API 暴露了一種獲取 Repositorylog 結果的方法。更新後的 API 現在將允許 log 受到 path 的約束。

export interface LogOptions {
  readonly maxEntries?: number;
  readonly path?: string;
}
export interface Repository {
  log(options?: LogOptions): Promise<Commit[]>;
}

現在還有一個 Git 擴充套件 API,用於根據 BranchQuery 獲取 getBranches

export interface BranchQuery {
  readonly remote?: boolean;
  readonly contains?: string;
}
export interface Repository {
  getBranches(query: BranchQuery): Promise<Ref[]>;
}

輔助功能資訊

我們已將 AccessibilityInformation 新增到 TreeItemStatusBarItemTimelineItem 元素,以支援螢幕閱讀器。AccessibilityInformation 包含一個 label 和一個 rolelabel 由螢幕閱讀器讀取,role 描述了元素的輔助功能特徵。

工程

Windows ARM64 Insider 版本

Windows ARM 64 位有新的官方 Insider 版本,可在Insider 下載頁面獲取。

這些版本適用於 Microsoft Surface Pro X,所以請嘗試一下並告訴我們您的想法。

Windows ARM64

--crash-reporter-directory 引數用於診斷問題

一個新的命令列引數 --crash-reporter-directory 允許您傳遞一個本地資料夾,您希望將崩潰報告儲存在其中。這甚至適用於擴充套件主機中的崩潰,並且可以在 VS Code 崩潰且您想要報告問題時使用。

預載入指令碼

我們已將 Electron preload 指令碼新增到 VS Code,以將某些 Electron API 暴露給視窗。這是實現完全沙盒化視窗的第一步。進展情況在問題 #92164 中概述。

擴充套件示例現在使用 ESLint

我們的擴充套件示例都已更新為使用ESLint進行 linting,而不是現在已棄用的 TSLint。如果您的擴充套件仍在使用 TSLint,您可以檢視TSLint 到 ESLint 遷移指南以及我們新更新的擴充套件示例,瞭解如何遷移到 ESLint。

GitHub Triage 擴充套件

我們為基於 Chromium 的瀏覽器建立了一個擴充套件,透過提供一個可模糊過濾的指派人、標籤、里程碑和我們用來觸發我們的分流GitHub Actions的各種特殊評論的選單,幫助我們在 GitHub 上進行問題分流。我們已將程式碼在 GitHub 上開源

Screenshot of Extension

文件和擴充套件

Build 上的 Visual Studio Code

VS Code 團隊在Microsoft Build 2020 大會上進行了演示,您可以在這篇VS Code at Build 部落格文章中找到 VS Code 會話和線上講座的概述。

VS Code 團隊成員的幾場演講

Azure 擴充套件

有幾個新的擴充套件可用於直接在 VS Code 中處理和部署 Azure 資產。

Azure Databases extension

新命令

命令 命令 ID
⌘K ⇧Enter(Windows、Linux Ctrl+K Shift+Enter 固定編輯器 workbench.action.pinEditor
⌘K ⇧Enter(Windows、Linux Ctrl+K Shift+Enter 取消固定編輯器 workbench.action.unpinEditor

值得注意的修復

  • 10144:在 Linux 上使用 system-ui 作為字型
  • 63068:macOS dock 圖示太小
  • 69163:在側邊欄中顯示活動檔案正在丟擲異常
  • 95367:為無效的 frameId 發出 DAP “evaluate” 請求
  • 95856:Go To Line 應包含“filename.extension:line number”格式
  • 96713:從呼叫堆疊操作檢視停止會話總是轉到活動會話
  • 96914:大綱可見時打字滯後
  • 96987:Orca 不讀取斷點檢視中的行號
  • 97444:從除錯監視複製長值會導致貼上部分值
  • 97471:除錯懸停太窄,水平滾動無用
  • 97731:打字和滾動時 VS Code 凍結
  • 96643:在 onDid(Start|End)Task 回撥中,任務(和 TaskExecutions)不 ===

感謝

最後但同樣重要的是,衷心感謝以下本月為 VS Code 做出貢獻的人們:

對我們問題跟蹤的貢獻

vscode 的貢獻

language-server-protocol 的貢獻

vscode-generator-code 的貢獻

vscode-vsce 的貢獻

debug-adapter-protocol 的貢獻

vscode-js-debug 的貢獻

localization 的貢獻

在過去的一年裡,我們認真聽取了您的反饋,並決定是時候提供一個更可靠、更具互動性的平臺,讓您可以為 VS Code 本地化開發做出貢獻。考慮到這一點,我們在 4 月的第一週正式停用了 Microsoft 本地化社群平臺 (MLCP),旨在在另一個平臺繼續進行開源本地化專案的 Microsoft 社群本地化計劃。

敬請關注未來幾周在我們Wiki頁面上關於新社群平臺的公告。您還可以訪問常見問題頁面,瞭解有關此平臺過渡的答案。