常用功能
常用功能是您擴充功能重要的建構組塊。幾乎所有擴充功能都會使用到這些功能。以下說明如何利用它們。
命令
命令是 VS Code 運作的核心。您可以開啟命令面板來執行命令、將自訂快速鍵綁定到命令,以及按一下右鍵在上下文選單中調用命令。
擴充功能可以
- 使用
vscode.commands
API 註冊並執行命令。 - 使用
contributes.commands
貢獻點,使命令在命令面板中可用。
在擴充功能指南 / 命令主題中了解更多關於命令的資訊。
設定
擴充功能可以使用 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。對於 Web 版 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 視窗中的一般進度
Progress 範例說明了此 API。