You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何制作简单易懂的VSCode自定义语法高亮插件?

VS Code自定义语法高亮开发权威参考和完整流程
  • 权威参考直接查询VS Code官方扩展文档中的「语法高亮开发」章节,以及TextMate语法规范即可,这两份资料是最完整的官方指引,覆盖从项目初始化到规则调试、发布的全流程,无步骤缺失。
  • 完整入门流程可按以下步骤执行:
    • 用Yeoman的code-generator生成基础扩展骨架,你已完成该步骤
    • 编辑生成的syntaxes/*.json配置文件,也就是你当前贴出的文件,定义语法匹配规则
    • 在package.json中配置语言关联,指定文件后缀对应的语言ID、语法文件路径
    • 按F5启动扩展开发宿主窗口,打开对应后缀的测试文件,实时验证高亮效果
    • 调用VS Code内置的「开发人员: 检查编辑器令牌和作用域」命令调试匹配规则,确认每个字符对应的作用域是否符合预期
    • 规则调试完成后打包扩展,即可本地安装或发布到插件市场
现有配置问题优化

你当前的配置代码如下:

{
    "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
    "name": "BetterMarkupLanguage",
    "patterns": [
        {
            "include": "#keywords"
        },
        {
            "include": "#strings"
        }
    ],
    "repository": {
        "keywords": {
            "patterns": [{
                "name": "entity.other.bml",
                "match": "\\b({|}|\\\\|//)\\b"
            }]
        },
        "strings": {
            "name": "string.quoted.double.bml",
            "begin": "`",
            "end": "`"
        }
    },
    "scopeName": "source.bml"
}

可优化点如下:

  • 当前的keywords匹配规则存在逻辑错误:\b是单词边界标识符,仅匹配单词字符(字母、数字、下划线)和非单词字符的交界,而{、}、\、//都不属于单词字符,\b规则会直接失效,对应符号无法被匹配到,把match规则改成"([{}]|\\\\|//)"即可正常匹配
  • 字符串规则如果要支持转义符,可以新增patterns配置,匹配反斜杠加任意字符的转义规则,避免字符串内的反引号意外闭合
  • 后续新增规则优先使用通用的作用域命名,比如关键字用keyword.control.bml,注释用comment.line.bml,可自动适配绝大多数主题的配色,不需要额外自定义主题色

内容的提问来源于stack exchange,提问作者acaiberii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:15:04