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

如何让VS Code的tokenColorCustomizations规则仅作用于C文件?

问题描述

我正在使用Visual Studio Code的Gruvbox主题,在settings.json中有如下配置:

"editor.tokenColorCustomizations": {
        "[Gruvbox Dark Medium]": {
            "textMateRules": [
                {
                    "scope": "source.c, entity.name.function.preprocessor",
                    "settings": {
                        "foreground": "#eb9b82"
                    }
                }
            ]
        }
    },

该配置可修改C宏的颜色,但打开Rust文件时,Rust宏也被修改了颜色,尽管scope字段包含source.c。Rust宏末尾带有感叹号,我不希望它们被改色。

附截图:

  • 无上述配置时println!宏的VS Code令牌检查器:
    无配置时println!宏的令牌检查器
  • 启用上述配置后的令牌检查器:
    启用配置后的令牌检查器

请问如何让该设置仅应用于C文件?

解决方案

问题出在你的scope写法上,source.c, entity.name.function.preprocessor是两个独立的作用域,意味着所有匹配entity.name.function.preprocessor的令牌都会被改色,不管当前是不是C文件。

要让规则仅作用于C文件里的宏,需要把两个作用域合并成嵌套关系,用空格连接表示“同时满足”:

"editor.tokenColorCustomizations": {
        "[Gruvbox Dark Medium]": {
            "textMateRules": [
                {
                    "scope": "source.c entity.name.function.preprocessor",
                    "settings": {
                        "foreground": "#eb9b82"
                    }
                }
            ]
        }
    },

这样规则就只会匹配C文件(source.c)中的entity.name.function.preprocessor令牌,Rust文件里的宏就不会被影响了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:10:02