2020 年 5 月 (版本 1.46)
1.46.1 更新:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:Intel | Linux:deb rpm tarball snap
歡迎使用 Visual Studio Code 2020 年 5 月版本。
- 輔助功能改進 - 狀態列導航,更輕鬆的鍵盤文字選擇。
- 靈活的檢視和麵板佈局 - 在側邊欄和麵板中移動和分組檢視。
- 固定編輯器選項卡 - 在標題欄中固定編輯器,以便常用檔案觸手可及。
- 新增 GitHub 遠端 - 將 GitHub 遠端新增到本地儲存庫。
- 自動除錯配置改進 - 儲存並修改生成的除錯配置。
- JavaScript CommonJS 自動匯入 - 自動匯入現在將對 CommonJS 模組使用
require。 - JS/TS 重構保留換行符 - 重構操作期間保留格式。
- 設定同步預覽 - 新的“同步機器”和“資料”檢視,用於管理您的偏好設定。
- GitHub Issue Notebooks - 執行 GitHub issue 查詢並在自定義 Notebook 中顯示結果。
- Windows ARM64 支援 - 新的 VS Code Insiders ARM64 版本可用。
- Build 2020 上的 VS Code - 關於技巧與竅門、遠端開發和 VS Code 歷史的講座。
如果您想線上閱讀這些發行說明,請訪問 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 標籤現在可以正確傳達以下編輯器狀態:`pinned`、`preview` 和 `readonly`。
工作臺
靈活佈局
我們已經多次宣佈了在使佈局更靈活方面取得的進展。在此版本中,這組功能已可供一般使用。以下是這些功能的概述。
在側邊欄和麵板之間移動檢視
也許您更希望側邊欄中的檢視位於面板中,反之亦然。為此,您現在可以拖動檢視的標題或整個組的圖示或標題,從其當前位置移動到所需位置。透過鍵盤,可以使用命令檢視:移動檢視 (workbench.action.moveView) 和檢視:移動聚焦檢視 (workbench.action.moveFocusedView)。
下面是拖動“搜尋”到面板並將“問題”拖動到側邊欄的演示。

將“搜尋”拖動到面板,將“問題”拖動到活動欄
主題:GitHub Light
之前有一個設定用於將“搜尋”檢視從側邊欄移動到面板,現在該設定已過時,因為可以使用拖放代替。
分組檢視
您可能還希望將來自不同擴充套件的一些檢視組合在一起,或者您覺得內建檢視的預設組不適合您。您可以將檢視移動到現有組中,也可以為選定的一組檢視建立新組。這在側邊欄和麵板中都像以前一樣有效。以下是一些示例。

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

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

在側邊欄和麵板中建立帶有“時間線”和 GitLens 的自定義歷史組
主題:GitHub Light
重置檢視位置
檢視和檢視組可以透過其上下文選單重置為預設位置。當檢視已從其預設位置移動時,將有一個“重置位置”條目將其移回其原始位置。還有命令檢視:重置聚焦檢視位置 (workbench.action.resetFocusedViewLocation) 和檢視:重置檢視位置 (workbench.action.resetViewLocations),用於將所有檢視和組重置回其預設位置。
對於貢獻檢視或檢視容器的擴充套件作者
當檢視在工作臺中移動時,有時需要以不同的方式呈現,要麼帶有圖示,要麼如果它們不在預設位置,則帶有額外的上下文。在貢獻檢視時,作者現在可以提供一個 `icon` 屬性和一個 `contextualTitle`。如果未提供,這些將預設為它們所貢獻的檢視容器的圖示和標題。
最後,擴充套件作者現在可以直接向 `panel` 貢獻檢視容器,而不是 `activitybar`,如樹檢視擴充套件指南中所述。
固定選項卡
您現在可以從上下文選單或使用新命令 workbench.action.pinEditor (⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter)) 固定選項卡。

主題:GitHub Light
固定選項卡有許多有用的功能,可以幫助您標記重要檔案
- 固定選項卡始終顯示在非固定選項卡之前。
- 如果您打開了許多選項卡,它們不會滾動出檢視。
- 使用“關閉其他”等命令時,它們不會關閉。
- 即使您超出了開啟編輯器的設定限制,它們也不會關閉。
您還可以拖放選項卡以更改固定狀態。
固定選項卡會視覺縮小到圖示大小(如果停用了圖示,則顯示檔名的第一個字母)以節省空間。如果您希望在固定選項卡中看到髒指示器,可以設定 workbench.editor.highlightModifiedTabs: true。
注意:我們仍在考慮其他呈現固定選項卡的方式。如果您有意見,請隨時在現有問題中分享您的想法,例如顯示輔助選項卡欄或設定以顯示固定選項卡的更多上下文。
搜尋編輯器
有幾個新選項可以配置 搜尋編輯器 的建立方式
search.searchEditor.defaultNumberOfContextLines- 配置搜尋編輯器預設顯示多少上下文行。search.searchEditor.reusePriorSearchConfiguration- 在建立新的搜尋編輯器時,重用上一個活動搜尋編輯器的配置。- 支援在鍵繫結引數中傳遞搜尋編輯器配置變數(引數詳細資訊)。
資源管理器自動顯示焦點而不強制滾動
explorer.autoReveal 設定有一個新選項 focusNoScroll。使用此選項時,資源管理器將在開啟檔案時自動選擇檔案,但不會滾動以在資源管理器檢視中顯示它們。
列表和樹的平滑滾動
啟用 workbench.list.smoothScrolling 設定將使列表和樹中的滾動在缺乏平滑滾動硬體(例如,Windows 上的離散滑鼠滾輪)的情況下更加平滑。

帶扣尺寸配置
您現在可以使用 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` 設定)。
- 與編輯器類似的連結高亮和懸停體驗。

主題:Topaz (Dim)
任務
繼續最近的任務效能改進,執行生成任務將不再總是向擴充套件請求其任務。如果您在資料夾的 tasks.json 中配置了預設生成任務,執行生成任務將只嘗試解析該任務,而不是在執行預設生成任務之前查詢所有擴充套件中的所有任務。
原始碼管理
在終端中開啟
您現在可以從原始碼管理檢視的上下文選單中在終端中開啟儲存庫。

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

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

輸入欄位字型族
您現在可以使用 Scm: 輸入字型族 設定自定義原始碼管理輸入欄位中使用的字型族。該設定支援以下值
default- 工作臺使用者介面字型族。editor- 在編輯器:字型族設定中指定的字型族。font family name- 輸入欄位中要使用的字型族名稱(例如,Cascadia Code)。
中止進行中的 rebase
您現在可以使用 Git: 中止 Rebase 命令中止進行中的 rebase 操作。
除錯
自動除錯配置改進
在這個里程碑中,我們改進了自動除錯配置的體驗
-
上一個里程碑,我們引入了一項功能,使擴充套件作者能夠分析當前專案並自動提供除錯配置。這些除錯配置是動態建立的,因此它們不會出現在
launch.json配置檔案中。只要它們開箱即用,這很好,但有時您可能需要修改配置,例如新增一個額外的引數。現在有一個選項可以將自動除錯配置儲存到launch.json中,以便開啟它進行編輯。為此,請使用除錯:選擇並開始除錯快速選擇中自動除錯配置末尾的齒輪按鈕
-
現在可以從“執行和除錯”啟動檢視中顯示所有自動除錯配置。

-
除錯下拉選單現在會記住之前選擇的自動除錯配置。
單步進入目標
除錯包含許多巢狀函式呼叫的語句可能會很痛苦,因為您可能不得不單步執行您不感興趣的函式。為了改善這種情況,除錯介面卡協議支援“單步進入目標”功能,該功能顯示用於直接單步進入您感興趣的函式的 UI。
在此里程碑中,VS Code 已開始使用此功能。當除錯在語句上停止時,上下文選單會顯示一個新動作單步進入目標。此動作會顯示當前堆疊幀中所有可用目標(通常是函式)的列表。選擇其中一個將單步進入該目標。
請注意,每個堆疊幀都可以有自己的一組目標。因此,單步進入目標操作的結果取決於“呼叫堆疊”檢視中當前選定的幀。

目前,只有 Mock Debug 擴充套件支援(假的)單步進入目標,但很快其他除錯擴充套件也會跟進——例如 Julia 偵錯程式。
語言
TypeScript 3.9
VS Code 現在包含 TypeScript 3.9.4。這個主要的 TS 更新帶來了一些新的工具功能、效能改進和許多錯誤修復。您可以在 TypeScript 部落格上閱讀有關 TS 3.9 的更多資訊。
CommonJS 自動匯入
如果 VS Code 檢測到您正在 CommonJS 風格的 JavaScript 模組中工作,自動匯入現在將使用 require 而不是 import。

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

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

這也允許您為新增所有缺失的匯入設定一個鍵繫結
{
"key": "ctrl+shift+i",
"command": "editor.action.sourceAction",
"args": {
"kind": "source.addMissingImports",
"apply": "first"
}
}
甚至在儲存時啟用新增所有缺失的匯入
"editor.codeActionsOnSave": [
"source.addMissingImports"
]
JS/TS 工作區中的轉到符號包含所有開啟的專案
預設情況下,JavaScript 和 TypeScript 的工作區符號搜尋現在搜尋所有開啟的 jsconfig 和 tsconfig 專案。它之前只包含焦點檔案所屬專案的搜尋結果。
此行為由 typescript.workspaceSymbols.scope 設定控制,並且需要 TS 3.9+。要恢復到以前的行為並僅搜尋當前專案,請設定 "typescript.workspaceSymbols.scope": "currentProject"
新增缺失的匯入快速修復現在可以標記為首選
JavaScript 和 TypeScript 的新增缺失的匯入快速修復現在可以標記為錯誤的首選修復。這讓您可以使用 ⌥⌘. (Windows, Linux Shift+Alt+.) 透過一次按鍵新增缺失的匯入。
請注意,僅當存在單個有效匯入時,才會將新增缺失的匯入標記為首選修復。如果您的專案中存在多個潛在匯入,您仍然需要使用正常的“程式碼操作”選單來選擇要使用的匯入。此外,要在 JavaScript 中啟用新增缺失的匯入快速修復,您必須啟用型別檢查。
JSON 離線模式
新的設定 `json.schemaDownload.enable` 讓您可以控制是否允許 JSON 擴充套件從 `http` 和 `https` 獲取 JSON 模式。
噹噹前編輯器想要使用無法下載的模式時,狀態列中會出現一個警告三角形。基於模式的功能,如驗證、程式碼完成和懸停,將受到限制。

瀏覽器支援
選項卡標題中的除錯停止指示器
在瀏覽器中除錯擴充套件時,被除錯的擴充套件會顯示在一個新的瀏覽器選項卡中,該選項卡會停用(隱藏)偵錯程式選項卡。當被除錯程式因某種原因停止時,例如,命中斷點,我們無法啟用偵錯程式選項卡(因為瀏覽器沒有提供此 API)。這使得幾乎不可能發現被除錯的擴充套件已停止。
為了緩解此問題,我們現在更新選項卡標題以包含一個紅色圓形指示器 🔴(類似於斷點)。一旦偵錯程式選項卡被啟用,紅色點就會被移除。

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

在此迭代中,我們擴充套件了對許多選項的支援
--goto在特定行開啟檔案--diff比較兩個檔案--wait讓程式等待檔案關閉--add將資料夾新增到當前工作區
例如,在 GitHub Codespaces 中,這使您可以將基於瀏覽器的 VS Code 用作 Git 的編輯器

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

賬戶管理
在之前的版本中,我們引入了新的賬戶管理 UI 的預覽版,同時引入了設定同步功能的預覽版。現在,此 UI 將預設顯示。使用新的提議的 身份驗證提供程式 API 的擴充套件可以在此處顯示登入請求,您可以檢視您的賬戶並管理擴充套件訪問許可權。目前使用此 API 的擴充套件數量有限,我們將在 API 穩定後努力提高採用率。
預覽功能
預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。
設定同步
我們過去幾個月一直致力於支援跨機器同步 VS Code 偏好設定,此功能可在 Insiders 版本中進行預覽。
在此里程碑中,我們增強了對設定同步的管理和診斷支援。
同步機器檢視
我們添加了同步機器檢視,以顯示同步您的 VS Code 偏好設定的機器列表。根據您使用的 VS Code 型別(Insiders 或 Stable)和平臺提供預設名稱,但您始終可以使用檢視中機器條目上的編輯操作更新名稱。

主題:GitHub Sharp with Customizations
您可以使用命令面板中的首選項同步:顯示同步資料命令開啟此檢視。
同步資料檢視
我們對同步資料檢視進行了以下增強。
- 您現在可以看到正在同步資料的機器。
- 您可以使用檢視中資料條目上的恢復操作恢復到特定狀態。
- 您可以使用檢視標題中更多操作 (...) 按鈕下的重置同步資料操作重置雲上的資料。

主題:GitHub Sharp with Customizations
我們現在在開啟同步時提供更多幫助,透過檢查您是否即將與來自不同機器的資料同步,並允許您採取適當的措施。
- 替換本地 - 用雲端同步的資料替換您當前機器上的資料。
- 合併 - 將您當前機器上的資料與雲端同步的資料合併。
- 顯示同步資料 - 開啟“同步資料”檢視以檢視雲端同步的資料。

新的 JavaScript 偵錯程式
本月我們繼續在新的 JavaScript 偵錯程式上取得進展。自 5 月中旬以來,它已成為 Insiders 上的預設偵錯程式,幷包含在此版本的 VS Code Stable 中(但預設未啟用)。您可以透過啟用 debug.javascript.usePreview 設定來將其與現有啟動配置一起使用。
本月主要集中於現有功能的完善和穩定
- 瀏覽器除錯多標籤頁支援:您現在可以在執行瀏覽器或 Web 檢視時附加到多個標籤頁。預設情況下,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 每晚擴充套件來立即嘗試 TypeScript 4.0 每晚構建。請分享反饋,並在您遇到 TypeScript 4.0 的任何錯誤時告知我們。
對擴充套件的貢獻
Notebook
快速大綱
筆記本擴充套件,例如 GitHub Issue Notebooks,現在支援快速大綱。按 kb('workbench.action.gotoSymbol') 或使用轉到編輯器中的符號命令,檢視當前筆記本中所有 Markdown 和程式碼單元格的預覽。

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

主題:GitHub 主題
合併/拆分單元格
我們引入了兩組命令,可讓您快速合併單元格或將單元格拆分為更小的片段

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

統一的撤消/重做堆疊
使用者操作的筆記本單元格操作或修改筆記本單元格內容現在在同一個撤消/重做堆疊中進行跟蹤。

GitHub 拉取請求和議題
GitHub Pull Requests and Issues 擴充套件仍在繼續開發中,該擴充套件允許您處理、建立和管理拉取請求和問題。此版本的一些更新包括
- 改進了問題懸停中的標籤。
- 問題和使用者建議現在僅在註釋和純文字中觸發。
- 新的問題編輯器允許您設定受讓人和標籤。
要了解所有新功能和更新,您可以檢視擴充套件的 0.17.0 版本的完整更新日誌。
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
1.46 中的新功能包括
- 開發容器:支援 GPG 轉發。
- 開發容器:支援檢查 Docker 卷。
- 開發容器:新的
devcontainer.json命令屬性。
您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。
十六進位制編輯器
透過支援二進位制編輯器的自定義編輯器 API 的最終確定,我們開發了一個十六進位制編輯器擴充套件,以提供原生的十六進位制編輯體驗。

此擴充套件仍在開發中,目前僅支援以十六進位制開啟和導航檔案。我們將繼續致力於導航體驗,然後轉向支援編輯。您可以試用該擴充套件並提供反饋或針對 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 設定活動輸入選項的前景色。這些顏色會顯示在搜尋檢視和查詢小部件(編輯器、終端、除錯控制檯)中。

新的 codicon 圖示
我們已將以下新圖示新增到 codicon 庫中
server-processserver-environmentrecordpassstop-circleplay-circle
![]()
提供者使用泛型型別
我們的 `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 { ... }
}
在 Web 檢視中編寫主題特定的 CSS
Web 檢視的 `body` 元素有一個名為 `vscode-theme-name` 的新資料屬性,它儲存當前活動主題的全名。這允許您在 Web 檢視中編寫主題特定的 CSS
body[data-vscode-theme-name="One Dark Pro"] {
background: hotpink;
}
請記住,鑑於 VS Code 可用主題的數量,您應該只在特殊情況下編寫主題特定的 CSS。普通的 Web 檢視應使用 .vscode-light 和 .vscode-dark 類名以及 VS Code CSS 變數來編寫適應使用者選擇的任何主題的 CSS。
自定義二進位制編輯器
我們已經最終確定了自定義二進位制編輯器的 API。自定義編輯器 API 允許擴充套件建立基於 Web 檢視的自定義編輯器,這些編輯器可以替換 VS Code 的預設文字編輯器,或者使用者可以切換到這些編輯器。這可用於直接在 VS Code 中預覽資產檔案,例如影像或 3D 模型,或者為特定檔案型別構建更專業的編輯介面。透過新的二進位制自定義編輯器 API,您現在還可以為非文字檔案格式構建讀/寫編輯器。

自定義編輯器擴充套件指南更詳細地介紹了該 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 設定定義。此 API 現在也被內建的 Git 擴充套件用於讓 VS Code 成為身份驗證提供者。
除錯介面卡協議
新的指令斷點
新增了一種“指令”斷點型別,可以實現在記憶體地址處的指令斷點。記憶體地址以符號形式指定,這些符號形式可選擇從 evaluate、variables、stackTrace 和 gotoTargets 請求中獲取。相應的 capability supportsInstructionBreakpoints 指示除錯介面卡是否支援指令斷點。
支援“步進粒度”
步進請求 next、stepIn、stepOut、stepBack 中新增了一個可選的 granularity 引數,用於控制請求是按“語句”、“行”還是“指令”進行步進。相應的 capability supportsSteppingGranularity 指示除錯介面卡是否支援此功能。
建議的擴充套件 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試使用它們。一如既往,我們希望得到您的反饋。要嘗試提議的 API,您需要執行以下操作:
- 您必須使用 Insiders 版本,因為提議的 API 經常更改。
- 您的擴充套件的
package.json檔案中必須包含以下行:"enableProposedApi": true。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的源位置。
請注意,您不能釋出使用提議 API 的擴充套件。下一個版本中可能會有重大更改,我們絕不希望破壞現有擴充套件。
Git 擴充套件 API
內建的 Git 擴充套件提供了供擴充套件使用的 API。現有的 API 提供了一種獲取 Repository 的 log 結果的方法。更新後的 API 現在將允許 log 受 path 的約束。
export interface LogOptions {
readonly maxEntries?: number;
readonly path?: string;
}
export interface Repository {
log(options?: LogOptions): Promise<Commit[]>;
}
現在還有一個基於 BranchQuery 的 Git 擴充套件 API 用於 getBranches
export interface BranchQuery {
readonly remote?: boolean;
readonly contains?: string;
}
export interface Repository {
getBranches(query: BranchQuery): Promise<Ref[]>;
}
輔助功能資訊
我們已將 AccessibilityInformation 新增到 TreeItem、StatusBarItem 和 TimelineItem 元素中,以支援螢幕閱讀器。AccessibilityInformation 包含一個 label 和一個 role。label 由螢幕閱讀器讀取,role 描述元素的輔助功能特性。
工程
Windows ARM64 Insiders
Insiders 下載頁面上提供了新的適用於 Windows ARM 64 位 的官方 Insider 版本。
這些版本適用於 Microsoft Surface Pro X,所以請嘗試一下,告訴我們您的想法。

用於診斷問題的 --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 上開源了程式碼。

文件和擴充套件
Build 上的 Visual Studio Code
VS Code 團隊在 Microsoft Build 2020 大會上進行了演講,您可以在這篇 VS Code at Build 部落格文章中找到 VS Code 會議和線上講座的概述。
VS Code 團隊成員的幾場演講
- VS Code 提示與技巧 - 20 個提示與技巧,讓您使用 VS Code 更高效。
- 每個 Visual Studio Code 使用者都應該瞭解的 GitHub 知識 - 瞭解 VS Code 的 GitHub 整合,包括 PR 和 issues。
- 使用 Visual Studio Code 進行遠端開發 - 瞭解 Visual Studio Code 如何使開發人員能夠隨時隨地進行遠端工作。
- Visual Studio Code 的歷史 - 瞭解 VS Code 如何誕生並發展至今。
Azure 擴充套件
有幾個新的擴充套件可用於直接在 VS Code 中處理和部署 Azure 資產。
- Azure 靜態 Web 應用 - 直接從 VS Code 建立和管理 Azure 靜態 Web 應用。
- Azure 資料庫 - 在 Azure 中建立、瀏覽和更新全球分散式、多模型資料庫。

新命令
| 鍵 | 命令 | 命令 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 (and TaskExecutions) 在 onDid(Start|End)Task 回撥中不是 ===
感謝
最後但同樣重要的是,衷心感謝以下本月為 VS Code 做出貢獻的人們:
對我們問題跟蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
對 vscode 的貢獻
- AlexStrNik (@AlexStrNik)
- Andrew Branch (@andrewbranch):提案:允許使用 --inspect-brk 啟動 TS Server PR #98340
- Christos Pappas (@ChrisPapp)
- @D-to-the-K:Monaco Monarch 語言定義中對 Unicode 感知的正則表示式的支援 PR #98447
- Rick van Galen (@DCKcode):容器檔案支援 PR #93184
- Paul (@DFineNormal):修復 snippets.contribution.ts 中的拼寫錯誤 PR #98396
- matt penrice (@elmpp):為帶方案的檔案路徑建立 VsCodeResource PR #94986
- HaoboGu (@HaoboGu):修復 #98102 PR #98127
- HiDeoo (@HiDeoo):修復 vscode.d.ts 中的拼寫錯誤 PR #98692
- Ilia Pozdnyakov (@iliazeus):新增
:line goto 模式 #95856 PR #96535 - Andrii Dieiev (@IllusionMH):修復除錯圖示。使用 Codicons 而不是文字 PR #98716
- Jack Works (@Jack-Works):更新 typescript.code-snippets PR #98521
- @Jagua:修復 json-language server readme 的縮排和拼寫錯誤 PR #97812
- Jānis Gailis (@JanisGailis):為 Monokai Dimmed 主題新增終端顏色 PR #98323
- Jean Pierre (@jeanp413)
- John Keech (@jkeech):清除 Web 檢視上過時的 CSS 樣式屬性 PR #96665
- John Blackbourn (@johnbillion):將 *.ts.map 檔案視為 JSON PR #98409
- Robert Jin (@jzyrobert):#84696 修改 git add/revert 以使用 splitInChunks PR #84843
- Danny Lin (@kdrag0n):恢復並修復 macOS 深色文字選擇游標 PR #96947
- Leila Pearson (@leilapearson):修復資源管理器中的檔名排序順序邊緣情況。 PR #97200
- Lissein (@lissein):修復 titleBar 主題顏色上的註釋 PR #97360
- Max (@MaxGyver83):使 Neo 鍵盤佈局(第 4 層)箭頭鍵在資源管理器檢視中工作 PR #98269
- Alasdair McLeay (@penx):CSS - 在父資料夾中搜索節點模組解析 PR #81555
- Pieter Vanderpol (@petevdp):允許內聯差異編輯器居中。 PR #97311
- Pascal Fong Kye (@pfongkye):修復:新命令 stageAllMerge PR #97349
- James Koss (@phuein):不要滾動到顯示檔案的選項。 PR #96890
- Jack Platten (@plttn):修復拼寫錯誤 PR #97198
- @ricksentam:更改構建 PR #98857
- Robert Rossmann (@robertrossmann)
- shskwmt (@shskwmt):功能 #94173:插入建議時滾動 PR #94327
- Steven Hermans (@steven166):在瀏覽器工作臺中透過拖放上傳資料夾 PR #97347
- Rahul Kadyan (@znck):功能:使用 configNamespace 註冊其他擴充套件的語言提供程式 PR #95621
- Jakub Trąd (@Dzejkop):搜尋編輯器:新增預設顯示上下文值屬性 PR #97920
對 language-server-protocol 的貢獻
- (@KamasamaK)
- Knut Aldrin (@zub):更正“aritfacts”的拼寫 PR #980
- Remy Suen (@rcjsuen):將“revers”拼寫錯誤修復為“reverse” PR #995
- Steven Kalt (@SKalt):使用固定表格標題 PR #1000
對 vscode-generator-code 的貢獻
- Alexey Elizarov (@beautyfree):修復:暗色主題的 json 無效 PR #207
對 vscode-vsce 的貢獻
- Owen Farrell (@owenfarrell):支援從環境變數注入 PAT PR #447
對 debug-adapter-protocol 的貢獻
- @auott
- Vitalii Akimov (@awto):adapters.md 中 Effectful JavaScript 偵錯程式引用 PR #113
- @tomcec:更新 adapters.md PR #115
- Andrew Wang (@WardenGnaw):更新 C/C++ DAP 維護者 PR #117
- FW (@fwcd):新增 Kotlin 除錯介面卡 PR #120
對 vscode-js-debug 的貢獻
- Vadym Okun (@cbmd):添加了使用所選包管理器而不是僅使用
npm執行的可能性。 PR #459
對 localization 的貢獻
我們認真聽取了您在過去一年中的反饋,並決定是時候提供一個更可靠、更具互動性的平臺,您可以在其中為 VS Code 本地化開發做出貢獻。考慮到這一點,我們於 4 月的第一週正式停用了 Microsoft 本地化社群平臺 (MLCP),旨在繼續在替代平臺上開展 Microsoft 社群本地化計劃,以用於開源本地化專案。