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

如何用VSCode Highlight插件高亮多行注释块中的TODO内容

实现VSCode Highlight插件多行TODO注释高亮的解决方案

我找了不少资料没找到合适的方法,自己摸索出了可行的方案,分享给大家。

VSCode的Highlight插件可以通过正则匹配高亮TODO、FIXME这类标记,但官方提供的通用正则不仅复杂难改,还没法匹配多行的TODO注释内容——比如下面这段Python代码,只有第一行的TODO会被高亮,后面的多行注释内容不会被匹配:

# TODO (example): only this line is highlighted :( the rest of my
# extensive note on multiple lines
# is not matched.
def my_code(something):
    does_something()

解决方法:自定义多行匹配正则

我们可以简化正则,针对单行注释风格的语言(比如Python、Shell等),写一个支持多行匹配的规则,替换原有的配置。以下是修改后的settings.json配置示例:

"highlight.regexFlags": "gi",
"highlight.regexes": {
  // 匹配单行注释开头的TODO及后续同风格注释行
  "(#\\s*TODO(?:\\s*\\([^)]+\\))?:?)([\\s\\S]*?)(?=\\n[^#]|$)": {
    "filterFileRegex": ".*\\.(py|sh|md)$", // 可根据需要添加文件后缀
    "decorations": [
      {
        "overviewRulerColor": "#ffcc00",
        "backgroundColor": "#ffcc00",
        "color": "#1f1f1f",
        "fontWeight": "bold"
      },
      {
        "backgroundColor": "#ffcc00",
        "color": "#1f1f1f"
      }
    ]
  },
  // 可添加FIXME等其他标记的规则,格式同上
  "(#\\s*FIXME(?:\\s*\\([^)]+\\))?:?)([\\s\\S]*?)(?=\\n[^#]|$)": {
    "filterFileRegex": ".*\\.(py|sh|md)$",
    "decorations": [
      {
        "overviewRulerColor": "#ff6666",
        "backgroundColor": "#ff6666",
        "color": "#1f1f1f",
        "fontWeight": "bold"
      },
      {
        "backgroundColor": "#ff6666",
        "color": "#1f1f1f"
      }
    ]
  }
}

正则说明

  • #\\s*TODO(?:\\s*\\([^)]+\\))?:?:匹配以#开头,后面跟着可选空格、TODO标记,以及可选的括号内备注(比如TODO (example))
  • ([\\s\\S]*?):非贪婪匹配所有内容(包括换行),直到遇到终止条件
  • (?=\\n[^#]|$):终止条件——下一行不是以#开头的注释,或者到达文件结尾

适配其他语言

如果是使用//作为单行注释的语言(比如JavaScript、Java),只需要把正则中的#替换成//即可,示例:

"(//\\s*TODO(?:\\s*\\([^)]+\\))?:?)([\\s\\S]*?)(?=\\n[^/]|$)": {
  "filterFileRegex": ".*\\.(js|java|ts)$",
  "decorations": [
    // 装饰配置同上
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:16:26