VSCode TODO Highlight v2:如何设置高亮优先级实现分层注释高亮
解决VSCode注释颜色与TODO等关键词高亮冲突的问题
直接通过VSCode的textMateRules配置,利用token scope的层级优先级实现需求,具体步骤如下:
- 打开VSCode设置(快捷键
Ctrl+,),搜索editor.tokenColorCustomizations,点击「编辑 in settings.json」。 - 将以下配置添加到settings.json中:
"editor.tokenColorCustomizations": { "textMateRules": [ // 设置所有普通注释的颜色为#00cccc { "scope": "comment", "settings": { "foreground": "#00cccc" } }, // 保留TODO/FIXME/REVIEW的默认高亮(继承主题原有颜色) { "scope": [ "comment.tag.todo", "comment.tag.fixme", "comment.tag.review" ], "settings": { "foreground": "$theme.foreground" } } ] }
关键说明:
- 第一条规则针对最宽泛的
commentscope,统一修改所有普通注释的颜色。 - 第二条规则针对更具体的
comment.tag.todo等scope(不同语言的scope可能略有差异),将这些关键词的颜色恢复为主题默认的前景色(也可直接指定自定义高亮色,比如#ffcc00)。由于更具体的scope优先级高于宽泛的comment,所以不会被普通注释的颜色覆盖。
确认正确scope的方法:
按Ctrl+Shift+P打开命令面板,输入「Developer: Inspect Editor Tokens and Scopes」并执行,将鼠标放在目标注释关键词上,即可查看对应的具体scope,确保配置中的scope与实际匹配。
之前排除正则无效的原因:
注释行通常带有//、/*等前缀,^(?!TODO:).+这类正则未考虑这些前缀,无法正确匹配;且正则规则若匹配整个注释行,会覆盖行内所有token的高亮,导致TODO等关键词被强制统一颜色,而用scope选择器是基于token层级的精准控制,优先级逻辑更可靠。
内容的提问来源于stack exchange,提问作者Alex F
相关产品推荐
相关产品推荐

