VS Code提供了多种扩展方式来扩展其功能。其插件功能大概分为几类,每个类别包括:
- 你的插件可以使用的一些功能
- 指向使用这些功能的更详细主题的链接
- 一些插件的想法
但是,VS Code也对插件进行了限制,以确保VS Code的稳定性和性能。例如,插件无法访问VS Code UI的DOM。
通用能力
通用能力是你可以在任何插件中使用的核心功能。主要包括以下能力:
- 注册命令、配置、快捷键绑定或上下文菜单
- 存储工作区或全局数据
- 显示通知消息
- 使用快速选择收集用户输入
- 打开系统文件选择器让用户选择文件或文件夹
- 使用Progress API指示长时间运行的操作
命令Command
命令是VS Code工作方式的核心。你打开命令面板可以执行命令,可以将自定义快捷键绑定到命令,也可以右键单击调用上下文菜单中的命令。
- 可以使用
vscode.commandsAPI注册和执行命令 - 使用
contributes.commands使命令在命令面板中可用
配置Configuration
插件可以使用contributes.configuration设置特定于插件的设置,并使用workspace.getConfigurationAPI来读取它们。
快捷键绑定Keybinding
插件可以添加自定义快捷键绑定。使用contributes.keybindings。参考Key Bindings。
上下文菜单Context Menu
插件可以注册自定义上下文菜单,这些菜单将在右键单击时显示在VS Code UI的不同部分,使用contributes.menus。更多参考
数据存储
存储数据有四种选择:
显示通知
VS Code提供了三种API用于显示不同严重程度的通知消息:
快速选择Quick Pick
使用vscode.QuickPickAPI,你可以轻松收集用户输入或让用户从多个选项中进行选择
文件选择器File Picker
插件可以使用vscode.window.showOpenDialogAPI打开系统文件选择器并选择文件或文件夹。
输出通道
Progress API
主题
主题控制VS Code的外观,包括编辑器中源代码的颜色和VS Code UI的颜色。
插件思路:
- 更改源代码的颜色
- 更改VS Code UI的颜色
- 将现有的TextMate主题移植到VS Code
- 添加自定义文件图标
声明式语言特性
声明式语言特性添加了对编程语言的基本文本编辑支持,例如括号匹配、自动缩进和语法突出显示。这是以声明方式来完成的,无需编写任何代码。
插件思路:
- 将常见的JavaScript片段捆绑到插件中。
- 告诉VS Code一种新的编程语言
- 添加或替换编程语言的语法
- 使用语法注入扩展现有语法
- 将现有的TextMate语法移植到VS Code
编程语言特性
编程语言特性添加了丰富的编程语言支持,例如悬停Hovers、转到定义Go to Definition、诊断错误、IntelliSense和CodeLens。这些语言特性通过vscode.language.*API实现。插件可以直接使用这些API,也可以编写语言服务器并使用VS Code语言服务器库来使其适应VS Code。
插件思路:
- 添加显示API示例用法的悬停
- 使用诊断报告源代码中的拼写或linter错误
- 为HTML注册一个新的代码格式化程序
- 提供丰富的上下文感知IntelliSense
- 添加对一种语言的折叠、面包屑和大纲支持
工作台功能
工作台功能扩展了VS Code工作台UI。向文件资源管理器添加新的右键单击操作,甚至可以使用VS Code的TreeView API构建自定义资源管理器。如果你的插件程序需要完全自定义的用户界面,请使用WebView API使用标准HTML、CSS和JavaScript构建你自己的文档预览或UI。
插件思路:
- 将自定义上下文菜单操作添加到文件资源管理器
- 在边栏中创建一个新的交互式TreeView
- 定义一个新的活动栏视图
- 在状态栏中显示新信息
- 使用WebView API呈现自定义内容
- 贡献源代码控制提供者
调试
你可以通过编写将VS Code的调试UI连接到特定调试器或运行时的调试器插件来利用VS Code的调试功能。
插件思路:
- 通过提供调试适配器,将VS Code的调试UI连接到调试器或运行时
- 指定调试器插件支持的语言
- 为调试器使用的调试配置属性提供丰富的IntelliSense和悬停hover信息
- 提供调试配置片段
UX用户体验指南
为了帮助你的插件无缝融入VS Code用户界面,请参阅UX指南,你将在其中了解创建插件UI的最佳实践和遵循首选VS Code工作流程的约定。
限制
无DOM访问权限