讲师中心 微信公众号
AI工具推荐 视频效率加速

VSCode语言特性支持_实现语法高亮扩展

轻宇君_9374

轻宇君_9374

发布时间:2025-11-21 19:33:06

|

480人浏览过

|

来源于php中文网

原创

首先定义语言标识与文件扩展名,再通过language-configuration.json配置注释、括号等基础行为,接着使用TextMate语法规则(.tmLanguage.json)定义关键字、字符串、注释等元素的匹配模式与作用域名称,最后在VSCode中注册文法并测试高亮效果,确保正则准确且作用域命名规范以适配主流主题。

vscode语言特性支持_实现语法高亮扩展

要实现 VSCode 中的语法高亮扩展,核心是通过定义语言的文法(Grammar)来告诉编辑器如何识别和着色代码中的不同元素。语法高亮本身并不依赖语言服务器,而是基于 TextMate 语法规则或 Semantic Token(语义标记)来实现。

1. 定义语言支持

在编写语法高亮扩展前,需先声明你的语言。创建 package.json 文件并在 contributes.languages 中注册语言基本信息:

  • id:语言唯一标识符(如 mylang)
  • extensions:该语言文件的后缀名(如 .myl)
  • aliases:语言的显示名称

示例:

{
  "contributes": {
    "languages": [
      {
        "id": "mylang",
        "extensions": [".myl"],
        "aliases": ["MyLang", "mylang"],
        "configuration": "./language-configuration.json"
      }
    ]
  }
}

2. 配置语言基本行为

创建 language-configuration.json 文件,定义括号匹配、注释格式、自动补全等基础行为:

{
  "comments": {
    "lineComment": "//",
    "blockComment": ["/*", "*/"]
  },
  "brackets": [
    ["{", "}"],
    ["[", "]"],
    ["(", ")"]
  ],
  "autoClosingPairs": [
    ["{", "}"],
    ["[", "]"],
    ["(", ")"],
    [""", """],
    ["'", "'"]
  ]
}

3. 实现语法高亮(TextMate 规则)

语法高亮的核心是使用 TextMate 语法规则(.tmLanguage.json 文件)。VSCode 支持 JSON 格式的文法定义。

在 package.json 中注册:

jm-jsjkxyjs02-zlm-405
jm-jsjkxyjs02-zlm-405

使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。

下载
{
  "contributes": {
    "grammars": [
      {
        "language": "mylang",
        "scopeName": "source.mylang",
        "path": "./syntaxes/mylang.tmLanguage.json"
      }
    ]
  }
}

mylang.tmLanguage.json 示例:

{
  "scopeName": "source.mylang",
  "patterns": [
    {
      "name": "keyword.control.mylang",
      "match": "\b(if|else|while)\b"
    },
    {
      "name": "string.quoted.double.mylang",
      "begin": """,
      "end": """,
      "patterns": [
        {
          "name": "constant.character.escape.mylang",
          "match": "\\."
        }
      ]
    },
    {
      "name": "comment.line.double-slash.mylang",
      "match": "//.*$"
    }
  ],
  "repository": {},
  "uuid": "..."
}

关键字段说明:

  • scopeName:必须与 grammar 注册时一致
  • match:正则表达式匹配文本
  • name:作用域名称,决定颜色(由主题映射)
  • begin/end:用于多行结构(如字符串、注释)

4. 测试与调试

使用 VSCode 的扩展开发环境(F5 启动)测试高亮效果。可借助以下工具:

  • Developer: Inspect Editor Tokens and Scopes 命令查看当前光标位置的 token 和作用域
  • 检查正则是否正确捕获目标语法
  • 确认 .tmLanguage.json 被正确加载

确保语法作用域命名符合社区惯例,以便兼容主流主题的颜色配置。

基本上就这些。语法高亮扩展不涉及复杂逻辑,关键是写对正则和作用域命名。只要文法定义清晰,VSCode 就能自动完成着色。发布前建议在多种主题下测试显示效果。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2275

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3702

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1236

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4259

2025.09.10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4836

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

3301

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

9202

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

812

2023.08.11

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn