语言扩展概述
Visual Studio Code 通过 Language Extensions 为不同的编程语言提供了智能编辑功能。VS Code 在核心编辑器中不提供内置的语言支持,但提供一组 API,使语言功能更加丰富。
例如,HTML扩展使用这些API来显示HTML文件的语法高亮。同样,当你输入控制台。和日志 在IntelliSense中出现,这是Typescript语言特性扩展在起作用。
VS Code将这些扩展中的部分与编辑器捆绑在一起,以便从一开始就为您提供丰富的语言支持。
语言特性大致可以分为两大类:
声明性语言特性
声明性语言特性在配置文件中定义。示例包括html、css和typescript-basic扩展,这些扩展捆绑在 VS Code 中,提供了以下声明性语言特性的子集:
- 语法高亮
- 片段完成
- 括号匹配
- 括号自动闭合
- 括号自动包围
- 评论切换
- 自动缩进
- 折叠(按标记)
我们有三份关于编写语言扩展的指南,这些指南提供了声明性语言功能。
- 语法高亮指南:VS Code 使用 TextMate 语法进行语法高亮。本指南将引导您编写一个简单的 TextMate 语法并将其转换为 VS Code 扩展。
- 片段完成指南:本指南解释了如何将一组片段打包成一个扩展。
- 语言配置指南:VS Code 允许扩展定义 语言配置 用于任何编程语言。此文件控制基本编辑功能,例如注释切换、括号匹配/包围和区域折叠(遗留)。
编程语言特性
程序化语言特性包括自动完成、错误检查和跳转到定义。这些特性通常由语言服务器提供支持,语言服务器是一个分析你的项目以提供动态特性的程序。
一个例子是类型脚本语言特性 VS Code 中捆绑的扩展。它利用了 TypeScript 语言服务 来提供诸如:
- 悬停信息
vscode.languages.registerHoverProvider) - 自动完成 (
vscode.languages.registerCompletionItemProvider) - 跳转到定义 (
vscode.languages.registerDefinitionProvider) - 错误检查
- 格式化
- 重构
- 折叠
以下是完整的程序化语言特性列表。

语言服务器协议
通过标准化语言服务器(静态代码分析工具)和语言客户端(通常是源代码编辑器)之间的通信,语言服务器协议允许扩展作者编写一个代码分析程序,并在多个编辑器中重用。
在程序化语言特性列表中,您可以找到所有 VS Code 语言特性的列表以及它们如何映射到语言服务器协议规范。
我们提供了一份深入指南,解释如何在 VS Code 中实现 Language Server 扩展:

特殊案例
多根工作区支持
当用户打开一个多根工作区时,您可能需要相应地调整您的语言服务器扩展。本主题讨论了支持多根工作区的多种方法。
嵌入式语言
嵌入式语言在网页开发中很常见。例如,HTML中的CSS/JavaScript,以及JavaScript/TypeScript中的GraphQL。 嵌入式语言 主题讨论了如何向嵌入式语言提供语言功能。