🚀 在 VS Code 中取得

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 與語言伺服器通訊時,這些行尾差異可能會導致問題,因為各種概念會在 VS Code 和語言伺服器之間使用 (line;char) 座標進行通訊。如果行終止符的定義不同,可能會導致檔案中行和位置的不同對應。

開啟檔案時,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 - 在編輯器:字型系列設定中指定的字型系列。
  • 字型系列名稱 - 要在輸入欄位中使用的字型系列名稱 (例如,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

瀏覽器支援

索引標籤標題中的偵錯停止指示器

在瀏覽器中偵錯擴充功能時,偵錯的擴充功能會顯示在新的瀏覽器索引標籤中,該索引標籤會停用 (隱藏) 偵錯工具索引標籤。當 debuggee 因故停止時 (例如,命中中斷點),我們無法啟用偵錯工具索引標籤 (因為瀏覽器未提供用於此目的的 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

您可以使用命令面板中的喜好設定同步:顯示已同步資料命令來開啟此檢視。

已同步資料檢視

我們對「已同步資料」檢視新增了下列增強功能。

  • 您現在可以看到資料同步來自的機器。
  • 您可以使用檢視中資料項目上可用的還原動作,還原到特定狀態。
  • 您可以使用檢視標頭中更多動作 (...) 按鈕下的重設已同步資料動作,重設雲端上的資料。

Synced Data view

佈景主題:具有自訂的 GitHub Sharp

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

  • 取代本機 - 將您目前機器上的資料取代為來自雲端的已同步資料。
  • 合併 - 將您目前機器上的資料與來自雲端的已同步資料合併。
  • 顯示已同步資料 - 開啟「已同步資料」檢視以查看來自雲端的已同步資料。

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 的錯誤。

擴充功能的貢獻

Notebooks

快速大綱

Notebook 擴充功能 (例如 GitHub Issue Notebooks) 現在支援快速大綱。按下 kb('workbench.action.gotoSymbol'),或使用在編輯器中前往符號命令,並查看目前 Notebook 的所有 Markdown 和程式碼儲存格的預覽。

Notebook quick outline preview list

佈景主題:GitHub Theme

錯誤和符號導覽

我們改進了 F8尋找所有參考的運作方式。所有程式碼導覽手勢都應該感覺與在 Notebook 外部一樣自然。例如,「問題」檢視現在將顯示所有 Notebook 的所有錯誤,並依 Notebook 分組,而不是再依儲存格分組

Problems panel with errors grouped by notebook

佈景主題:GitHub Theme

加入/分割儲存格

我們推出了兩組命令,讓您可以快速加入儲存格或將儲存格分割成更小的片段

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 Pull Requests and Issues

持續開發 GitHub Pull Requests and Issues 擴充功能,可讓您處理、建立和管理提取要求和 issue。此版本的一些更新包括

  • 改進 issue 懸停中的標籤。
  • Issue 和使用者建議現在只會在註解和純文字中觸發。
  • 新的 issue 編輯器可讓您設定受讓人和標籤。

若要深入瞭解所有新功能和更新,您可以查看擴充功能 0.17.0 版本的完整變更記錄

遠端開發

持續開發 遠端開發擴充功能,可讓您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。

1.46 中的新功能包括

  • 開發容器:支援 GPG 轉送。
  • 開發容器:支援檢查 Docker 磁碟區。
  • 開發容器:新的 devcontainer.json 命令屬性。

您可以在遠端開發版本資訊中深入瞭解新的擴充功能功能和錯誤修正。

Hex Editor

隨著自訂編輯器 API 完成對二進位編輯器的支援,我們開發了 hex editor 擴充功能,以提供原生十六進位編輯體驗。

Hex Editor

此擴充功能仍在開發中,目前僅支援以十六進位開啟和導覽檔案。我們將繼續致力於導覽體驗,然後繼續支援編輯。您可以試用此擴充功能,並提供意見反應或針對 vscode-hexeditor 存放庫提交 issue。

擴充功能撰寫

檔案路徑大小寫

我們修正了一些關於 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 圖示

我們已將下列新圖示新增至我們的 codicon 程式庫

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

New available icons

佈景主題:GitHub Dark Theme

提供者使用泛型型別

我們的 vscode.d.ts 類型定義現在使所有兩階段提供者 (具有個別的 'provide' 和 'resolve' 方法的提供者) 成為泛型。目標是更清楚地說明來自 'provide' 呼叫的結果會傳遞回 'resolve' 呼叫中。

例如,以下是 DocumentLinkProvider 的新泛型定義

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

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

所有提供者都有預設的泛型引數,因此此變更不應導致您的現有擴充功能發生任何錯誤。如果您先前在實作 'resolve' 時使用轉換或型別檢查,請考慮更新您的程式碼以改為使用泛型提供者

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 啟動事件

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

環境變數集合

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 設定定義。內建的 Git 擴充功能現在也使用此 API,讓 VS Code 成為驗證提供者。

偵錯配接器協定

新的指令斷點

有一種新的「指令」斷點類型,可以中斷記憶體位址上的指令。記憶體位址以符號形式指定,可以從 evaluatevariablesstackTracegotoTargets 請求中選擇性地取得。對應的功能 supportsInstructionBreakpoints 指示偵錯配接器是否支援指令斷點。

支援「步進粒度」

新的選填 granularity 引數已新增至步進請求 nextstepInstepOutstepBack,以控制請求是步進「語句」、「行」還是「指令」。對應的功能 supportsSteppingGranularity 指示偵錯配接器是否支援此功能。

建議的擴充功能 API

每個里程碑都伴隨著新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的回饋。以下是您試用建議 API 必須執行的操作

  • 您必須使用 Insiders 版本,因為建議 API 經常變更。
  • 您的擴充功能的 package.json 檔案中必須有這一行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的原始碼位置。

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

Git 擴充功能 API

內建的 Git 擴充功能 提供 API 供擴充功能使用。現有的 API 公開了一種取得 Repositorylog 結果的方法。更新後的 API 現在將允許 logpath 限制。

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

我們已將 AccessibilityInformation 新增至 TreeItemStatusBarItemTimelineItem 元素,以支援螢幕閱讀器。AccessibilityInformation 包含 labelrolelabel 由螢幕閱讀器讀取,而 role 描述元素的輔助功能特性。

工程

Windows ARM64 Insiders

現在有適用於 Windows ARM 64 位元的新官方 Insider 組建,可在 Insiders 下載頁面 上取得。

這些組建適用於 Microsoft Surface Pro X,因此請試用看看,並告訴我們您的想法。

Windows ARM64

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

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

預先載入腳本

我們已將 Electron preload 腳本新增至 VS Code,以將某些 Electron API 公開給視窗。這是朝向完全沙箱化視窗邁出的第一步。進度概述於 issue #92164

擴充功能範例現在使用 ESLint

我們的 擴充功能範例 都已更新為使用 ESLint 進行程式碼檢查,而不是現在已棄用的 TSLint。如果您的擴充功能仍然使用 TSLint,您可以查看 TSLint 至 ESLint 遷移指南 和我們新更新的擴充功能範例,以了解如何遷移到 ESLint。

GitHub Triage 擴充功能

我們為基於 Chromium 的瀏覽器建立了一個擴充功能,以協助我們在 GitHub 上進行 issue 分流,方法是提供一個單一的模糊篩選選單,其中包含受託人、標籤、里程碑以及我們用來觸發分流 GitHub Actions 的各種特殊註解。我們已在 GitHub 上開放原始碼。

Screenshot of Extension

文件與擴充功能

Build 大會上的 Visual Studio Code

VS Code 團隊在 Microsoft Build 2020 會議上進行了簡報,您可以在這篇 Build 大會上的 VS Code 部落格文章中找到 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:「前往行」應包含 "filename.extension:line number" 格式
  • 96713:從呼叫堆疊動作檢視停止工作階段時,始終會前往活動工作階段
  • 96914:在可見大綱時輸入會延遲
  • 96987:Orca 無法讀取中斷點檢視中的行號
  • 97444:從偵錯監看式複製長值會導致貼上部分值
  • 97471:偵錯懸停視窗太窄且水平捲動無用
  • 97731:VS Code 在輸入和捲動時凍結
  • 96643:Tasks (和 TaskExecutions) 在 onDid(Start|End)Task 回呼中不 ===

感謝

最後但同樣重要的是,非常感謝以下在本月為 VS Code 做出貢獻的人員

對我們的 issue 追蹤的貢獻

vscode 的貢獻

language-server-protocol 的貢獻

vscode-generator-code 的貢獻

vscode-vsce 的貢獻

debug-adapter-protocol 的貢獻

vscode-js-debug 的貢獻

localization 的貢獻

在過去一年中,我們仔細聆聽了您的意見回饋,並決定是時候提供一個更可靠且互動式的平台,讓您可以為 VS Code 本地化開發做出貢獻。有鑑於此,我們在四月的第一週正式停用了 Microsoft Localization Community Platform (MLCP),目的是在另一個開放原始碼本地化專案的替代平台上繼續 Microsoft Community Localization Program。

請密切關注我們 Wiki 頁面上即將發布的關於新社群平台的公告。您也可以造訪 FAQ 頁面,以取得有關此平台轉換的解答。