常用功能
常用功能是构建扩展程序的重要组成部分。几乎所有扩展程序都会用到其中一些功能。以下是如何利用它们。
命令
命令是 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。对于 VS Code for the Web,它使用双密钥加密 (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。