vscode插件開發中文文檔教程(5)——擴展的通用功能
原文鏈接:Common Capabilities
作者:Microsoft
譯者:倔強青銅三
前言
大家好,我是倔強青銅三。是一名熱情的軟件工程師,我熱衷於分享和傳播IT技術,致力於通過我的知識和技能推動技術交流與創新,歡迎關注我,微信公眾號:倔強青銅三。歡迎點贊、收藏、關注,一鍵三連!!!
擴展的通用功能
通用功能是構建擴展程序的重要組成部分。幾乎所有擴展程序都會使用其中的一些功能。以下是您如何利用它們的方法。
命令
命令是 VS Code 工作方式的核心。您可以通過命令面板執行命令,將自定義快捷鍵綁定到命令,並通過右鍵單擊在上下文菜單中調用命令。
擴展程序可以:
- 使用
vscode.commandsAPI 註冊和執行命令。 - 通過
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:
window.showInformationMessagewindow.showWarningMessagewindow.showErrorMessage
快速選擇
通過 vscode.QuickPick API,您可以輕鬆收集用户輸入,或讓用户從多個選項中進行選擇。快速輸入示例 展示了該 API。
文件選擇器
擴展程序可以使用 window.showOpenDialog API 打開系統文件選擇器並選擇文件或文件夾。
輸出通道
輸出面板顯示一組 OutputChannel,非常適合用於日誌記錄。您可以通過 window.createOutputChannel API 輕鬆利用它。
進度 API
您可以使用 vscode.Progress API 向用户報告進度更新。
通過 ProgressLocation 選項,可以在不同位置顯示進度:
- 在通知區域
- 在源代碼控制視圖中
- 在 VS Code 窗口中的通用進度
進度示例 展示了此 API。
最後感謝閲讀!歡迎關注我,微信公眾號:倔強青銅三。歡迎點贊、收藏、關注,一鍵三連!!!