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

2021 年 2 月(版本 1.54)

更新 1.54.1:此更新解決了擴充套件依賴項的一個問題

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

更新 1.54.3:此更新解決了這個問題

下載:Windows:x64 Arm64 | Mac:通用版 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2021 年 2 月版。此版本中有許多更新,希望您會喜歡,其中一些主要亮點包括:

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

請於太平洋時間 3 月 11 日星期四上午 8 點(倫敦時間下午 4 點)加入我們的 VS Code 團隊直播,觀看此版本新功能的演示並向我們提問。

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

Apple 晶片

我們很高興地宣佈,此迭代中釋出了第一個穩定的 Apple 晶片版本。使用 M1 晶片 Mac 的使用者現在無需 Rosetta 模擬即可使用 VS Code,並且在執行 VS Code 時會注意到更好的效能和更長的電池壽命。感謝社群使用 Insiders 版本進行自託管並在此迭代早期報告問題。

VS Code for macOS 的預設下載現在是通用版本,可在所有 Mac 上本機執行。在下載頁面上,您可以找到更多特定於架構的版本連結,例如 Intel 或 Apple 晶片,這些下載檔案比通用包要小。

Website showing the new downloads view for Apple Silicon builds

Website showing the default download for macOS

輔助功能

工具欄和選項卡佔用一個 Tab 鍵停止位

工作臺中的所有工具欄現在都遵循標準導航行為,因此工具欄在 Tab 鍵順序中僅佔用一個位置,並且可以使用箭頭鍵進行導航。一旦焦點位於工具欄上,就應該使用箭頭鍵將焦點移動到工具欄中的特定專案。由於此更改,工作臺中的 Tab 鍵停止位少得多,使得在所有部分之間導航更加容易。

為了保持一致性,同樣的更改也應用於選項卡區域。因此,整個選項卡區域只有一個 Tab 鍵停止位,並且選項卡之間的鍵盤導航應該使用左右箭頭鍵完成。

Windows 上的單詞導航

我們改進了 Windows 上的單詞導航方式,使其與 Windows 上的螢幕閱讀器對基於 Electron 的應用程式的期望保持一致。現在,當使用單詞導航時,螢幕閱讀器將正確讀出每個單詞。

由於此更改,我們正在棄用以下命令。它們仍然有效,但我們將來可能會將其刪除。

  • cursorWordAccessibilityLeft
  • cursorWordAccessibilityLeftSelect
  • cursorWordAccessibilityRight
  • cursorWordAccessibilityRightSelect

非 Windows 平臺已經按預期工作,因此我們沒有進行任何更改。

改進檢視和按鈕的角色

根據使用者反饋,我們改進了工作臺中多個檢視和按鈕的角色。活動欄側欄面板現在具有 role:none,這將使螢幕閱讀器不那麼冗長。活動欄中的管理帳戶按鈕現在會正確宣佈它們具有彈出視窗。

整合終端

在視窗重新載入時保留終端程序

本地終端程序現在會在視窗重新載入時恢復,例如當擴充套件安裝需要重新載入時。終端將重新連線,並且終端的 UI 狀態將恢復,包括活動選項卡和拆分終端相對尺寸。

In a local window, two split terminals are created and resized. On reload, the layout appears unchanged.

可以透過將 terminal.integrated.enablePersistentSessions 設定為 false 來停用此功能。

Windows 效能改進

由於新的終端程序佈局,來自終端程序的頻繁 pty 資料事件現在應該處理得更快。由於 Windows 上 conpty 提供較小的事件,預計這對 Windows 的影響會大於其他平臺。

自動重新啟動需要環境更改的終端

最近推出了一項新功能,使擴充套件能夠影響終端的環境。各種語言擴充套件和內建 Git 擴充套件都使用此功能,使 VS Code 能夠作為 Git 身份驗證提供程式,從而無需登入。以前,此功能的 UX 是在右上角顯示一個細微的 ⚠️ 圖示,表示終端的環境已過期。該指示器很細微,因為環境更改可能很重要也可能不重要。

我們對此進行了調整,當終端尚未互動時,會自動重新啟動環境過期的終端。這可能會導致一些閃爍,但擴充套件終端整合現在更加無縫。例如,WSL 視窗中的第一個終端不再顯示 Git 身份驗證錯誤,前提是在終端中輸入之前發生了重新啟動。

工作臺

Emmet

使用縮寫環繞使用縮寫環繞單個行命令已合併為單個使用縮寫環繞命令,以減少對使用哪個環繞命令的困惑。此外,使用縮寫環繞命令現在可以正確顯示預覽空白。

emmet.extensionsPath 設定現在也可以採用路徑陣列,而不僅僅是字串。因此,當與設定同步結合使用時,可以根據所在的計算機指向不同的程式碼片段檔案,而無需為每臺計算機更新設定。

產品圖示主題

第一個產品圖示主題已在擴充套件市場中推出。感謝主題作者的出色工作!

要選擇或查詢主題,請從命令提示符或設定齒輪中使用首選項:產品圖示主題命令。

Product icon themes in the Extension Marketplace

上下文鍵的 IntelliSense

VS Code 使用 when-子句來啟用和停用鍵繫結。擴充套件還使用 when-子句來控制選單檢視貢獻。由於編輯器現在為它們提供完成功能,因此創作這些 when-子句變得更加簡單。

keybindings.json 中上下文鍵的 IntelliSense 主題:GitHub Light Theme,字型:FiraCode

開啟編輯器中的新建無標題檔案操作

開啟編輯器檢視標題區域現在有一個新建無標題檔案操作。

New untitled file in Open Editors view

更新的應用程式選單設定

用於應用程式選單可見性的 window.menuBarVisibility 設定已更新,以更好地反映選項。主要進行了兩項更改。

首先,設定的 default 選項已重新命名為 classic

其次,應用程式選單欄中的顯示選單欄條目現在在 classiccompact 選項之間切換。要完全隱藏它,您可以在 compact 模式下更新設定,或使用活動欄的上下文選單。

應用程式選單中的“顯示選單欄”條目 主題:GitHub Light Theme

Webview 快取改進

我們改進了 webview 中本地檔案的快取。如果 webview 重新載入磁碟上的檔案,那麼我們現在使用 ETags 來避免在檔案未更改時再次讀取它。這可以消除資料傳輸,並提高響應時間,尤其是在遠端工作區中。

此快取目前僅適用於現有 webview 重新載入資源時。它不適用於新建立的 webview,即使該 webview 屬於以前建立過類似 webview 的擴充套件。

工作區搜尋操作的更改

我們修改了現有的 workbench.view.search,使其不再將選定的文字放入搜尋輸入中,而是開啟輸入。要使用選定的文字並遵循 search.mode 設定建立新搜尋,應使用 workbench.action.findInFiles

僅限修飾符的鍵繫結

現在可以為重複的修飾符定義鍵繫結,例如 shift shiftalt altctrl ctrlcmd cmd / meta meta / win win。這些鍵繫結可以手動輸入到 keybindings.json 中,例如

{ "key": "shift shift", "command": "workbench.action.quickOpen" }

更新的列表/樹 UI

我們更新了列表/樹樣式以匹配本機焦點和選擇指示器:焦點元素現在將使用輪廓顏色呈現。

List/tree UI showing focused element

重大更改

建議主題釋出者也採用此樣式,只需將 list.focusBackground 顏色的自定義項替換為 quickInput.list.focusBackground 顏色。要檢視示例,請檢視此提交

表格小部件

我們引入了一個新的表格小部件,它建立在現有列表小部件之上,因此我們可以以與渲染列表元素相同的效能來渲染表格資料。目前,它用於遠端功能的“埠”檢視中。

Table widget view of remote Ports

開始使用

我們正在試驗一個新的啟動時編輯器,稱為“入門”編輯器。這旨在使 VS Code 的某些功能對新使用者更易於使用。一些 Insiders 使用者可能已經看到了它,並且在此迭代過程中會慢慢推廣給更多的穩定版使用者。您始終可以透過將 workbench.startupEditor 設定修改為 gettingStarted 或遠離 gettingStarted 來選擇啟用或停用新行為。

Getting Started experience walkthrough

時間線檢視

您現在可以使用選擇進行比較與選定項比較命令來比較 Git 歷史時間線條目之間的更改,類似於在資源管理器檢視中比較檔案。此功能可讓您快速檢視 Git 檔案歷史記錄中任意兩次提交之間的所有更改。

Select for Compare command in context menu

預設的 SASH 懸停邊框顏色

1.52 版本中,我們引入了 sash 的懸停邊框顏色標記 (sash.hoverBorder),但沒有設定預設值。我們現在預設在所有主題上顯示此顏色。

Sash hover border color

除錯

斷點檢視改進

用於刪除斷點的新行內操作

我們添加了一個行內操作 X 以刪除斷點檢視中的斷點。此操作應該使刪除斷點更容易。

Breakpoints view showing X next to selected breakpoint

異常篩選器的幫助文字支援

最近,我們添加了在斷點檢視中編輯異常篩選器條件的支援

為了使這些條件更易於發現且其語法不言自明,VS Code 現在會在異常篩選器上顯示懸停文字並在條件文字框中顯示佔位符文字。

由於這兩種資訊均由底層除錯擴充套件提供,因此它可以比某些通用訊息更具體(因此更有幫助)。

由於此新功能基於對除錯介面卡協議的補充(見下文),因此它需要除錯擴充套件的加入。在此版本中,只有 VS Code 的內建 JavaScript 偵錯程式支援此新功能。

Breakpoint placeholder

新設定和其他改進

在除錯控制檯中摺疊相同的行

有一個新設定 debug.console.collapseIdenticalLines,用於控制除錯控制檯是否應摺疊相同的行並使用徽章顯示多次出現。預設設定為摺疊。

控制在除錯前儲存哪些編輯器

有一個新設定 debug.saveBeforeStart,用於控制在除錯開始前儲存哪些編輯器。此設定具有以下值:

  • allEditorsInActiveGroup:儲存活動組中的所有編輯器。預設值。
  • nonUntitledEditorsInActiveGroup:儲存活動組中的所有編輯器,除了無標題編輯器。
  • none:不儲存任何編輯器。

此設定對於 PowerShell 除錯很有用,因為 PowerShell 偵錯程式支援除錯未儲存的檔案。

改進重啟幀操作的啟用

透過對除錯介面卡協議的新增功能,除錯擴充套件現在能夠向 VS Code UI 傳達“重啟幀”操作是否在選定的堆疊幀上可用。VS Code 現在會為無法重啟的堆疊幀停用呼叫堆疊檢視中的重啟幀行內操作。

例如,JS-Debug 擴展采用了此功能,現在非同步堆疊跟蹤會停用重啟幀操作。

語言

TypeScript 4.2

VS Code 現在附帶 TypeScript 4.2.2。此重大更新包括許多 TypeScript 語言改進,以及許多 JavaScript 和 TypeScript 工具的改進和錯誤修復。

您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.2 的更多資訊。

快速修復宣告缺失的函式

新的新增缺失的函式宣告快速修復會建立缺失函式的存根。例如,如果我們呼叫缺失的函式 add

const x: number = add(1, 2);

add 使用新增缺失的函式宣告會導致:

const x: number = add(1, 2);
function add(arg0: number, arg1: number): number {
  throw new Error('Function not implemented.');
}

您可以在編寫程式碼時使用此快速修復,根據呼叫簽名快速建立函式存根。

要在 JavaScript 中使用此快速修復,您必須啟用型別檢查

JS Doc 模板現在生成 @returns

如果正在註釋的函式包含 return 語句,JS Doc 模板現在會自動包含 @returns。例如,對於函式 getViz

function getViz(el) {
  return el?.viz;
}

生成的 JSDoc 模板是:

/**
 *
 * @param {*} el
 * @returns
 */
function getViz(el) {
  return el?.viz;
}

您可以使用 javascript.suggest.jsdoc.generateReturnstypescript.suggest.jsdoc.generateReturns 停用 JSDoc 註釋中的 @returns

已棄用的 DOM API 現在已標記

已棄用的 DOM 方法現在在建議和程式碼中標記為已棄用:

document.clear being marked as deprecated in code

您可以透過設定 editor.showDeprecated: false 來停用在編輯器中顯示已棄用的屬性和函式。

Notebook

自動重新載入 Notebook

當 Notebook 檔案在磁碟上更改且沒有未儲存的更改時,Notebook 現在會自動重新載入。這使得處理版本控制下的 Notebook 變得更加簡單。

改進大單元格的焦點

當焦點位於大 Notebook 單元格上時,如果單元格的頂部和底部超出檢視,您現在可以更好地判斷哪個單元格具有焦點。我們現在在焦點單元格的左側和右側顯示邊框。

Notebook focus for a large cell

CSS/LESS/SCSS 和 HTML 中的懸停

您現在可以微調 HTML 和 CSS 中懸停的內容:

  • 不顯示 MDN 中的文件
  • 不顯示 MDN 頁面的連結

使用設定 css.hover.documentationcss.hover.references 來更改 CSS 的懸停。將 css 替換為 htmlcssscssless 來更改這些語言的設定。

預覽功能

可擴充套件的 Notebook Markdown 渲染器

在此迭代中,我們探索了使 Notebook 單元格的 Markdown 渲染器可擴充套件。例如,在下面的螢幕截圖中,我們擴充套件了 VS Code 的 Markdown 渲染器以支援在 Notebook 單元格中顯示數學公式:

A math formula being rendered in a notebook cell

為了使我們的 Markdown 渲染器可擴充套件,我們探索了使用 Markdown It 來渲染所有 Notebook Markdown。我們還探索了將渲染的 Markdown 移動到 Notebook 的後端 webview 中。

雖然我們尚未準備好為此開放官方 API,但我們計劃在 3 月份繼續進行此探索。您今天也可以使用未記錄的 notebook.experimental.useMarkdownRenderer: true 設定試用新的可擴充套件 Markdown 渲染器。

對擴充套件的貢獻

Brackets

來自 Brackets 原始碼編輯器的開發人員可以使用 Brackets Keymap 擴充套件在 VS Code 中繼續使用相同的鍵盤快捷鍵。還有一個 Brackets Extension Pack,它捆綁了用於處理 CSS 和建立即時預覽的擴充套件。

Brackets Extension Pack in the Marketplace

GitHub 拉取請求和議題

GitHub Pull Requests and Issues擴充套件仍在繼續開發中,該擴充套件允許您處理、建立和管理拉取請求和問題。

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

遠端開發

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

1.54 中的功能亮點包括:

  • 埠視圖表格佈局
  • 遠端 - SSH:X11 轉發
  • WSL:改進 WSL 2 支援

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

擴充套件創作

編輯器標題選單和“執行”子選單的限制

編輯器工具欄 (editor/title) 中的空間有限。因此,我們已

  • 實現了溢位行為。當主組(即使用圖示呈現的操作組)超過九個命令時,所有額外的命令都會溢位到 ... 選單中。
  • 添加了 editor/title/run 子選單。我們要求擴充套件作者將執行和除錯命令貢獻給此選單,而不是像我們在上一個版本中建議的那樣貢獻給 editor/title 選單。此外,不再需要使用神奇的組值 1_run@101_run@20 來使命令顯示在正確的位置。

Run dropdown menu

另請注意,執行子選單是動態的,當它成為唯一的子項時,它會自行替換為第一個子項。

身份驗證提供程式 API

您現在可以註冊一個身份驗證提供程式,其他擴充套件可以使用該提供程式對服務執行身份驗證。

擴充套件市場的新反饋渠道

有一個新的公共儲存庫用於與擴充套件市場相關的問題。如果您有技術問題、想要提供反饋或有功能請求,請開啟一個問題

更新的 codicons

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

  • debug-rerun
  • gather
  • git-pull-request-create
  • notebook-template
  • run-above
  • run-below
  • type-hierarchy
  • type-hierarchy-sub
  • type-hierarchy-super
  • variable-group

Codicons for tasks

我們還更新了以下圖示以保持一致:

  • debug-alt-small
  • debug-alt
  • debug-rerun
  • play-circle
  • play
  • run-above
  • run-all
  • run-below

Consistent codicons

建議的擴充套件 API

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

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

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

圖示貢獻點

圖示貢獻點允許擴充套件透過 ID 定義一個新圖示以及一個預設圖示。然後,該圖示 ID 可以由擴充套件(或依賴於該擴充套件的任何其他擴充套件)在可以使用 ThemeIcon 的地方使用:在 Markdown 字串中(例如,"$(distro-ubuntu)" Ubuntu 20.04")以及所有采用 ThemeIcon 的地方(例如,new ThemeIcon("distro-ubuntu"))。

產品圖示主題可以重新定義圖示(如果它們知道圖示 ID)。

有關更多資訊,請參閱 問題 114942 以獲取詳細資訊並提供反饋。

行內值提供程式 API

目前,VS Code 偵錯程式的顯示行內值功能基於 VS Code 核心中的通用實現,不提供透過設定進行自定義或透過擴充套件進行擴充套件的功能。因此,它並不完全適用於所有語言,有時會顯示不正確的值,因為它不理解底層源語言。因此,我們正在開發一個擴充套件 API,允許完全替換內建實現或使用自定義程式碼替換部分實現。

在此里程碑中,我們提供了擬議 API 的第一個實現。

以下是行內值提供程式 API 的簡要概述:

  • 必須為一種語言註冊一個 InlineValuesProvider
  • 對於給定的文件,InlineValuesProvider 必須找到應顯示行內值的所有語言元素。
  • 對於每個元素,必須返回一個 InlineValue 描述符物件,該物件指示 VS Code 顯示什麼資訊。目前支援三種類型的 InlineValue 物件:
    • InlineValueText:要顯示的完整文字,
    • InlineValueVariableLookup:變數的名稱,VS Code 將嘗試在“變數”檢視中查詢其值。名稱和值將以“name = value”的形式顯示,
    • InlineValueEvaluatableExpression:一個表示式,VS Code 將其傳送給偵錯程式進行評估。表示式和結果將以“expression = result”的形式顯示。

以下程式碼片段(來自 Mock Debug)顯示了一個最小的“markdown”檔案行內值提供程式,它使用正則表示式查詢“變數”,然後指示 VS Code 透過變數檢視查詢它們的值:

vscode.languages.registerInlineValuesProvider('markdown', {
  provideInlineValues(
    document: TextDocument,
    viewport: Range,
    context: InlineValueContext
  ): ProviderResult<InlineValue[]> {
    const allValues: InlineValue[] = [];
    for (let l = 0; l <= context.stoppedLocation.end.line; l++) {
      const line = document.lineAt(l);
      var regExp = /local_[ifso]/gi; // match variables of the form local_i, local_f, Local_i, LOCAL_S...
      do {
        var match = regExp.exec(line.text);
        if (match) {
          const varName = match[0];
          const varRange = new Range(l, match.index, l, match.index + varName.length);
          allValues.push(new InlineValueVariableLookup(varRange, varName));
        }
      } while (match);
    }
    return allValues;
  }
});

現在是行內值提供程式的實際應用:

Debugger shows inline values

如果您想為此擬議 API 提供反饋,請向此問題新增評論。

測試

我們繼續在 VS Code 中的測試方面取得進展。本月我們專注於完善 VS Code 中的基本體驗和擴充套件 API。我們還發布了一些關於測試的臨時文件,隨著 API 繼續穩定,這些文件將得到充實。

語言伺服器協議

診斷拉取模型的第一個提案已在即將釋出的 3.17 版本中實現。該提案可在 VS Code LSP 庫的下一個版本中使用。

除錯介面卡協議

ExceptionBreakpointsFilter 的更多幫助文字屬性

已向 ExceptionBreakpointsFilter 添加了兩個可選的 UI 屬性 descriptionconditionDescription

使用這些屬性,客戶端可以顯示有關異常斷點的附加資訊。description 屬性可以顯示在懸停文字中,conditionDescription 可以用作條件可以編輯的文字框的佔位符文字。

改進 setExceptionBreakpoints 請求的描述

我們改進了 setExceptionBreakpoints 請求的描述,添加了有關如果使用者輸入無效異常斷點條件時介面卡應執行的操作的指導。

堆疊幀的新 canRestart 屬性

已向堆疊幀添加了一個新的可選布林屬性 canRestart。它指示堆疊幀是否可以使用 restart 請求重啟。根據此資訊,客戶端可以啟用或停用重啟幀上下文選單操作。

工程

Electron 沙盒進展

在這個里程碑中,我們繼續讓 VS Code 視窗為啟用 Electron 的沙盒上下文隔離功能做好準備。

具體來說:

  • 我們能夠將渲染器中對本機模組的一些要求轉移到其他程序。
  • 當沙盒啟用時,MessagePort 通訊通道已實現為可工作。

新的終端程序佈局

終端程序現在在新的“pty host”程序下生成,而不是視窗程序。此更改不僅是 Electron 沙盒的一部分,還應該提高終端的穩定性和效能。

Windows 安裝程式釋出到 Windows 包管理器

x86x64 的 Windows 使用者和系統安裝程式現在釋出到 Windows 包管理器。您可以使用 winget 工具搜尋所有 Visual Studio Code 安裝程式 - winget search vscode,並安裝任何已釋出的安裝程式。

使用 TypeScript 4.3 構建 VS Code

VS Code 現在使用 TypeScript 4.3 的每夜構建版本構建。這使我們能夠驗證 TypeScript 團隊的最新工作,並就新更改提供反饋。

最新的 TypeScript 版本已經幫助我們捕獲了一些我們在條件語句中缺少 await 的情況。

防止 yarn.lock 更改

我們現在有 CI 來防止針對 yarn.lock 檔案的 PR,以提高供應鏈安全性。

預設分支:main

我們已開始將所有儲存庫的預設分支重新命名為 main,包括 microsoft/vscode。我們已完成此工作約 60%。

文件

VS Code 和 Python 在課堂上的應用

閱讀 Harvey Mudd 學院計算機科學教授的案例研究,他使用 VS Code 在他的 Python 計算機科學入門課程中。瞭解他為學生推薦的設定,以及有用的擴充套件和免費的自定進度 Python 和資料科學課程。

排查擴充套件問題部落格文章

每個人都喜歡安裝和使用 VS Code 擴充套件。但是,當您安裝了許多擴充套件時,有時編輯器可能會開始“表現奇怪”,如果知道這種行為是否由特定擴充套件引起,那就太好了。如果您錯過了較早釋出的 擴充套件二分法實用程式,您可以閱讀這篇“使用二分法解決擴充套件問題”部落格文章,其中描述瞭如何快速排查“不良”擴充套件,甚至可以幫助擴充套件作者提供反饋。

值得注意的修復

  • 100151: 選單鍵應用於資源管理器中的錯誤專案
  • 112055: 除錯為每個 Python 會話開啟一個新的整合終端
  • 114881: 複製資料夾或檔案時保留符號連結
  • 114933: “任務無法跟蹤”的挫敗感
  • 115922: 在檔案資源管理器中,游標鍵無法用於過濾
  • 116037: 除錯控制檯中的輸出未顯示連結懸停
  • 116101: 我無法在命令搜尋中找到目標命令,因為英文描述已消失
  • 116932: 從貢獻的命令執行中丟擲自定義異常會顯示神秘的錯誤彈出視窗

感謝

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

對我們問題跟蹤的貢獻

vscode 的貢獻

language-server-protocol 的貢獻

vscode-languageserver-node 的貢獻

vscode-emmet-helper 的貢獻

vscode-html-languageservice 的貢獻

vscode-js-debug 的貢獻

vscode-textmate 的貢獻

vscode-vsce 的貢獻

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