VS Code 插件功能概述

448 阅读4分钟

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访问权限