通用功能

通用功能是扩展的重要构建块。几乎所有扩展都使用其中一些功能。以下是您如何利用它们。

命令

命令是 VS Code 工作方式的核心。您可以打开命令面板来执行命令,将自定义键绑定绑定到命令,然后右键单击以调用上下文菜单中的命令。

扩展可以:

在扩展指南/命令主题中了解有关命令的更多信息。

配置

扩展程序可以通过贡献点贡献特定于扩展程序的设置contributes.configuration,并使用 API 读取它们workspace.getConfiguration

按键绑定

扩展可以添加自定义键绑定。阅读contributes.keybindings键绑定主题了解更多信息。

上下文菜单

扩展可以注册自定义上下文菜单项,右键单击时这些菜单项将显示在 VS Code UI 的不同部分。在contributes.menus贡献点阅读更多内容。

数据存储

有四种存储数据的选项:

  • ExtensionContext.workspaceState:工作区存储,您可以在其中写入键/值对。VS Code 管理存储,并在再次打开同一工作区时恢复它。
  • ExtensionContext.globalState:全局存储,您可以在其中写入键/值对。VS Code 管理存储并将在每次扩展激活时恢复它。setKeysForSync您可以通过使用method on设置同步键来选择性地同步全局存储中的键/值对globalState
  • ExtensionContext.storageUri:工作区特定的存储 URI,指向您的扩展具有读/写访问权限的本地目录。如果您需要存储只能从当前工作区访问的大文件,这是一个不错的选择。
  • ExtensionContext.globalStorageUri:指向您的扩展具有读/写访问权限的本地目录的全局存储 URI。如果您需要存储可从所有工作区访问的大文件,这是一个不错的选择。

扩展上下文可用于扩展条目文件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.QuickPickAPI,您可以轻松收集用户输入或让用户从多个选项中进行选择。QuickInput示例说明了 API。

文件选择器

扩展程序可以使用window.showOpenDialogAPI 打开系统文件选择器并选择文件或文件夹。

输出通道

输出面板显示 的集合OutputChannel,这对于记录目的非常有用。您可以通过 API 轻松利用它window.createOutputChannel

进度API

您可以使用vscode.ProgressAPI 向用户报告进度更新。

可以使用以下选项在不同位置显示进度ProgressLocation

  • 在通知区域
  • 在源代码管理视图中
  • VS Code 窗口中的一般进度

Progress 示例说明了此 API。