本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

常见功能

通用功能是您的扩展的重要组成部分。几乎所有的扩展都使用其中的一些功能。以下是您可以利用它们的方法。

命令

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

一个扩展可以:

了解更多关于命令的信息,请访问扩展指南 / Commands主题。

配置

扩展可以贡献扩展特定的设置贡献配置贡献点并使用它们工作区.获取配置应用程序编程接口。

按键绑定

扩展可以添加自定义的键绑定。阅读更多内容请访问贡献键绑定键绑定 主题。

上下文菜单

扩展可以注册自定义上下文菜单项,这些项将在 VS Code 用户界面的不同部分在右键单击时显示。 了解更多:贡献.menus贡献点。

数据存储

有五种选项用于存储数据:

  • 扩展上下文.工作区状态: 一个可以写入键/值对的工作区存储。VS Code 管理存储,并会在再次打开相同工作区时进行恢复。
  • 扩展上下文的全局状态: 全局存储,您可以在此处写入键/值对。VS Code 管理存储,并会在每次扩展激活时恢复它。您可以通过设置用于同步的键来选择性地同步全局存储中的键/值对。设置同步密钥方法在全局状态输入:.
  • 扩展上下文存储路径: 一个指向本地目录的特定工作区存储URI,您的扩展在此目录中有读/写访问权限。如果您需要存储只能从当前工作区访问的大文件,这是一个不错的选择。
  • 扩展上下文.全局存储路径: 一个全局存储URI,指向一个本地目录,您的扩展在此目录中有读/写访问权限。如果您需要存储可以从所有工作区访问的大文件,这是一个不错的选择。
  • 扩展上下文.秘密:一个用于存储秘密(或任何敏感信息)的全局存储,这些信息将会被加密。这些信息不会在机器之间同步。对于VS Code桌面版,这利用了Electron的安全存储API。对于VS Code网络版,这使用了双密钥加密(DKE)实现。

扩展上下文对以下内容可用激活 函数在 扩展入口文件

设置同步密钥示例

如果您的扩展需要在不同机器之间保存一些用户状态,请将状态提供给设置同步 使用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.快速选择 API,您可以轻松地收集用户输入或让用户从多个选项中进行选择。 QuickInput 示例 说明了该 API。

文件选择器

扩展程序可以使用Windows显示打开对话框API 打开系统文件选择器并选择文件或文件夹。

输出频道

输出面板显示了一系列输出通道,非常适合用于记录目的。您可以轻松利用它与Windows创建输出通道应用程序编程接口。

进度 API

你可以使用vscode.进度用于向用户报告进度更新的API。

进展可以在不同的位置显示使用进度位置选项:

  • 在通知区域
  • 在源代码控制视图中
  • VS Code Windows中的总体进展

这个进展样本说明了这个API。