🚀 在 VS Code 中

语言扩展概述

Visual Studio Code 通过语言扩展为不同的编程语言提供智能编辑功能。VS Code 在核心编辑器中不提供内置的语言支持,但提供了一组 API,以启用丰富的语言功能。

例如,HTML 扩展使用这些 API 来显示 HTML 文件的语法高亮。 类似地,当您键入 console. 并且 IntelliSense 中显示 log 时,这是 Typescript 语言功能 扩展在工作。

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

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

声明式语言功能

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

  • 语法高亮
  • 代码片段完成
  • 括号匹配
  • 括号自动关闭
  • 括号自动包围
  • 注释切换
  • 自动缩进
  • 折叠(按标记)

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

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

程序化语言功能

程序化语言功能包括自动完成、错误检查和跳转到定义。这些功能通常由语言服务器驱动,语言服务器是一个分析您的项目以提供动态功能的程序。一个例子是 VS Code 中捆绑的 typescript-language-features 扩展。它利用 TypeScript 语言服务 来提供程序化语言功能,例如

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

multi-ls

语言服务器协议

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

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

我们提供了一个深入的指南,解释了如何在 VS Code 中实现语言服务器扩展

multi-editor

特殊情况

多根工作区支持

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

嵌入式语言

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