概括
VSCode的构建考虑了可扩展性。从UI到编辑体验,VSCode的几乎所有部分都可以通过插件API进行定制和增强。事实上,VSCode的许多核心功能都是作为插件构建的,并使用同样的插件API
本文档描述了:
- 如何构建、运行、调试、测试和发布扩展
- 如何利用VSCode丰富的插件API
- 在哪可以找到帮助入门的指南和代码示例
- 遵循最佳实践扩展指南
代码示例可在Microsoft/vscode extension samples上获得
如果您正在寻找已发布的插件,请前往VSCode插件市场
扩展能做什么?
下面是一些使用插件API可以实现的示例:
- 使用颜色或文件图标主题更改VSCode的外观-主题化
- 在UI中添加自定义组件和视图-扩展工作台
- 创建Webview以显示使用HTML/CSS/JS构建的自定义网页-Webview指南
- 支持新的编程语言-语言扩展概述
- 支持调试特定的运行时-调试器扩展指南
声明性语言特征
声明性语言功能在配置文件中定义。示例包括与 VSCode 捆绑在一起的 html、css 和 typescript 基本扩展,它们提供了一部分以下声明性语言功能:
- 语法高亮
- 代码片段补全
- 括号匹配
- 括号自动关闭
- 括号自动环绕
- 注释切换
- 自动缩进
对于编写提供声明性语言特性的语言扩展,有三个指南
- 语法高亮指南:VSCode 使用
TextMate
语法进行语法高亮。本指南将指导您编写一个简单的TextMate
语法,并将其转换为 VSCode 扩展 - 代码片段补全指南:本指南介绍如何将一组代码片段捆绑到扩展中
- 语言配置指南:VSCode 允许扩展为任何编程语言定义语言配置。该文件控制基本编辑功能,如注释切换、括号匹配/环绕和区域折叠
编程语言特性
编程语言功能包括自动补全、错误检查和跳转定义。这些功能通常由语言服务器提供支持,语言服务器是一个分析项目以提供动态功能的程序。一个例子是捆绑在 VSCode 中的 Typescript 语言特性扩展。它利用 TypeScript 语言服务提供编程语言功能,例如:
- 悬停信息(vscode.languages.registerHoverProvider)
- 自动补全(vscode.languages.registerCompletionItemProvider)
- 跳转定义(vscode.languages.registerDefinitionProvider)
- 错误检查
- 格式化
- 重构
- 折叠
语言服务器协议
通过标准化语言服务器(静态代码分析工具)和语言客户端(通常是源代码编辑器)之间的通信,语言服务器协议允许扩展作者编写一个代码分析程序,并在多个编辑器中复用。 在编程语言功能列表中,您可以找到所有 VSCode 语言功能的列表,以及它们如何映射到语言服务器协议规范 语言服务器扩展指南,将介绍如何在 VSCode 中实现语言服务器扩展:
特殊情况
多根工作区支持主题
当用户打开多根工作区(VSCode 编辑器包含多个项目)时,可能需要相应地调整语言服务器扩展。本主题讨论支持多根工作区的多种方法
嵌入式语言主题
嵌入式语言在 web 开发中很常见。例如,HTML 中的 CSS/JS 和 JavaScript/TypeScript 中的 GraphQL。本主题讨论如何使语言功能可用于嵌入式语言