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

常用功能

通用功能是擴充套件的重要構建塊。幾乎所有擴充套件都使用其中一些功能。以下是如何利用它們。

命令

命令是 VS Code 工作方式的核心。您開啟命令面板以執行命令,為命令繫結自定義快捷鍵,並透過右鍵單擊在上下文選單中呼叫命令。

擴充套件可以

在“擴充套件指南 / 命令”主題中瞭解有關命令的更多資訊。

配置

擴充套件可以使用 contributes.configuration 貢獻點貢獻擴充套件特有的設定,並使用 workspace.getConfiguration API 讀取它們。

快捷鍵

擴充套件可以新增自定義快捷鍵。在 contributes.keybindings快捷鍵 主題中閱讀更多內容。

上下文選單

擴充套件可以註冊自定義上下文選單項,這些項將在 VS Code UI 的不同部分透過右鍵單擊顯示。在 contributes.menus 貢獻點閱讀更多內容。

資料儲存

有五種儲存資料的方式

  • ExtensionContext.workspaceState:工作區儲存,您可以在其中寫入鍵/值對。VS Code 管理此儲存,並在再次開啟同一工作區時將其恢復。
  • ExtensionContext.globalState:全域性儲存,您可以在其中寫入鍵/值對。VS Code 管理此儲存,並在每次擴充套件啟用時恢復它。您可以透過在 globalState 上使用 setKeysForSync 方法設定要同步的鍵來選擇性地同步全域性儲存中的鍵/值對。
  • ExtensionContext.storageUri:指向本地目錄的工作區特定儲存 URI,您的擴充套件對該目錄具有讀/寫訪問許可權。如果您需要儲存僅從當前工作區可訪問的大檔案,這是一個不錯的選擇。
  • ExtensionContext.globalStorageUri:指向本地目錄的全域性儲存 URI,您的擴充套件對該目錄具有讀/寫訪問許可權。如果您需要儲存可從所有工作區訪問的大檔案,這是一個不錯的選擇。
  • ExtensionContext.secrets:用於儲存秘密(或任何敏感資訊)的全域性儲存,這些資訊將被加密。這些資訊不會在機器之間同步。對於 VS Code 桌面版,這利用了 Electron 的 safeStorage API。對於 VS Code 網頁版,這使用雙重金鑰加密 (DKE) 實現。

擴充套件上下文可在 擴充套件入口檔案activate 函式中使用。

setKeysForSync 示例

如果您的擴充套件需要在不同機器之間保留某些使用者狀態,請使用 vscode.ExtensionContext.globalState.setKeysForSync 將狀態提供給 設定同步

您可以使用以下模式

// on activate
const versionKey = 'shown.version';
context.globalState.setKeysForSync([versionKey]);

// later on show page
const currentVersion = context.extension.packageJSON.version;
const lastVersionShown = context.globalState.get(versionKey);
if (isHigher(currentVersion, lastVersionShown)) {
    context.globalState.update(versionKey, currentVersion);
}

跨機器共享狀態可以幫助避免使用者看到多個歡迎或更新頁面例項的問題,方法是共享已忽略或已檢視的標誌。

顯示通知

幾乎所有擴充套件在某個時候都需要向用戶呈現資訊。VS Code 提供三個 API 來顯示不同嚴重級別的通知訊息

快速選擇

使用 vscode.QuickPick API,您可以輕鬆地收集使用者輸入或讓使用者從多個選項中進行選擇。 QuickInput 示例 說明了該 API。

檔案選擇器

擴充套件可以使用 window.showOpenDialog API 開啟系統檔案選擇器並選擇檔案或資料夾。

輸出通道

輸出面板顯示 OutputChannel 的集合,這對於日誌記錄非常有用。您可以使用 window.createOutputChannel API 輕鬆利用它。

進度 API

您可以使用 vscode.Progress API 向用戶報告進度更新。

可以使用 ProgressLocation 選項在不同位置顯示進度

  • 在通知區域
  • 在原始碼管理檢視中
  • VS Code 視窗中的常規進度

進度示例 說明了此 API。

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