通用功能
常見功能是建構您擴充功能的重要基石。幾乎所有的擴充功能都會用到其中某些功能。以下說明您可以如何利用它們。
指令
命令是 VS Code 運作的核心。您可以開啟命令面板來執行命令、將自訂快速鍵繫結至命令,並透過右鍵點選來呼叫內容選單中的命令。
擴充功能可以
- 使用
vscode.commandsAPI 註冊並執行命令。 - 使用
contributes.commands貢獻點,讓命令顯示於命令面板中。
欲了解更多關於命令的資訊,請參閱擴充功能指南 / 命令主題。
設定
擴充功能可以使用 contributes.configuration 貢獻點來提供擴充功能專屬的設定,並使用 workspace.getConfiguration API 讀取它們。
快速鍵 (Keybinding)
擴充功能可以新增自訂快速鍵。請參閱 contributes.keybindings 和 快速鍵 (Key Bindings) 主題以了解更多資訊。
內容選單 (Context Menu)
擴充功能可以註冊自訂的內容選單項目,當使用者在 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 Web 版中,則使用雙金鑰加密 (DKE) 實作。
擴充功能上下文 (Extension context) 可在擴充功能入口檔案的 activate 函式中使用。
setKeysForSync 範例
如果您的擴充功能需要在不同機器間保留某些使用者狀態,請使用 vscode.ExtensionContext.globalState.setKeysForSync 將該狀態提供給設定同步 (Setting Sync)。
您可以使用以下模式:
// 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 來顯示不同嚴重程度的通知訊息:
快速選擇 (Quick Pick)
透過 vscode.QuickPick API,您可以輕鬆收集使用者輸入,或讓使用者從多個選項中進行選擇。QuickInput 範例演示了此 API 的用法。
檔案選擇器
擴充功能可以使用 window.showOpenDialog API 開啟系統檔案選擇器並選取檔案或資料夾。
輸出通道 (Output Channel)
輸出面板會顯示一系列的 OutputChannel,非常適合用於記錄日誌。您可以透過 window.createOutputChannel API 輕鬆使用此功能。
進度 API (Progress API)
您可以使用 vscode.Progress API 向使用者回報進度更新。
進度可以透過 ProgressLocation 選項顯示在不同的位置:
- 在通知區域中
- 在原始碼控制檢視中
- VS Code 視窗中的一般進度列
Progress 範例演示了此 API 的用法。