Skip to content
索引

概括

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。本主题讨论如何使语言功能可用于嵌入式语言

Released under the MIT License.