语言扩展概述

Visual Studio Code 通过语言扩展为不同的编程语言提供智能编辑功能。VS Code 的核心编辑器并不内置语言支持,而是提供了一套 API,以实现丰富的语言功能。

例如,HTML 扩展利用这些 API 来显示 HTML 文件的语法高亮。同样,当您输入 console. 时,IntelliSense 中显示 log,这就是 TypeScript 语言功能 (Typescript Language Features) 扩展在发挥作用。

VS Code 将其中一些扩展与编辑器捆绑在一起,以便从一开始就为您提供丰富的语言支持。

语言功能大致可分为两类:

声明式语言功能

声明式语言功能在配置文件中定义。例如 VS Code 捆绑的 htmlcsstypescript-basic 扩展,它们提供了以下声明式语言功能的一个子集:

  • 语法高亮
  • 代码片段补全
  • 括号匹配
  • 括号自动闭合
  • 括号自动环绕
  • 切换注释
  • 自动缩进
  • 折叠(基于标记)

我们提供了三份指南,用于编写提供声明式语言功能的语言扩展。

  • 语法高亮指南:VS Code 使用 TextMate 语法进行语法高亮。本指南将引导您编写一个简单的 TextMate 语法并将其转换为 VS Code 扩展。
  • 代码片段补全指南:本指南说明了如何将一组代码片段打包到扩展中。
  • 语言配置指南:VS Code 允许扩展为任何编程语言定义语言配置。此文件控制基本的编辑功能,例如切换注释、括号匹配/环绕和区域折叠(旧版)。

程序化语言功能

程序化语言功能包括自动补全、错误检查和跳转到定义。这些功能通常由“语言服务器 (Language Server)”提供支持,这是一种分析项目以提供动态功能的程序。一个示例是 VS Code 捆绑的 typescript-language-features 扩展。它利用 TypeScript 语言服务来提供程序化语言功能,例如:

这是 程序化语言功能 的完整列表。

multi-ls

语言服务器协议

通过标准化语言服务器(静态代码分析工具)与语言客户端(通常是源代码编辑器)之间的通信,语言服务器协议 (Language Server Protocol) 允许扩展作者编写一个代码分析程序并在多个编辑器中重复使用它。

程序化语言功能 清单中,您可以找到所有 VS Code 语言功能列表,以及它们如何映射到 语言服务器协议规范

我们提供了一份深入的指南,说明如何在 VS Code 中实现语言服务器扩展。

multi-editor

特殊情况

多根工作区支持

当用户打开 多根工作区 时,您可能需要相应地调整您的语言服务器扩展。本主题讨论了支持多根工作区的多种方法。

嵌入式语言

嵌入式语言在 Web 开发中很常见。例如,HTML 中的 CSS/JavaScript,以及 JavaScript/TypeScript 中的 GraphQL。嵌入式语言 主题讨论了如何让嵌入式语言也能使用语言功能。

© . This site is unofficial and not affiliated with Microsoft.