【问题标题】:Visual Studio Code - meaning of syntax highlight colorsVisual Studio Code - 语法高亮颜色的含义
【发布时间】:2019-01-07 08:41:24
【问题描述】:

我正在寻找有关 Visual Studio Code 中每种语法突出显示颜色的实际含义的参考。我目前正在使用深色默认主题 Dark+。我已经习惯了识别一些突出显示的颜色,并且我了解了我正在查看的内容,但我正在寻找每种颜色含义的更​​详细参考。 我已经为此搜索了一段时间,但找不到任何列出颜色和含义的参考指南或词汇表/索引。不确定这是否重要,但我只用 JavaScript 编写。 提前谢谢你。

编辑:我已经包含了我所指的语法突出显示类型的屏幕截图。

【问题讨论】:

  • 您能否举例说明您看到/让您感到困惑的颜色?你也在用git吗?
  • 我已经包含了一个简单函数的屏幕截图来展示一些颜色。我还没有使用 git。
  • 我可能应该早点说 - 如果您将鼠标悬停在 VSC 中的任何错误上,它通常会准确地告诉您它在寻找什么错误。然后,您可以使用该信息来解决您的问题。无论如何,我稍后会仔细研究一下!
  • @AJC24 我对这段代码没有任何错误,而且我对 VSC 中的那个函数有点熟悉,但是谢谢!我正在寻找的是代码中每种颜色所代表的列表/词汇表。例如'function'是蓝色的,'if/else'是粉红色的。是否有任何地方描述颜色含义的列表?比如,为什么“function”和“NaN”有相同的颜色?

标签: syntax visual-studio-code syntax-highlighting highlight


【解决方案1】:

语法高亮颜色的含义分为两部分:

  1. 文件中的字符是如何组织成有意义的标记的?
  2. 这些标记是如何分配特定颜色和字体样式的?

将文本划分为标记

第一部分由 VSCode 内置的语法描述决定。 VSCode 使用基于TextMate grammars 的系统。语法是在 VSCode 源代码中定义的(例如,JavaScript.tmLanguage.json),但这种形式已经经历了几个后处理阶段,使它们几乎不可读。没有关于这些语法文件的意图的文档。他们倾向于至少大致遵循相关的语言规范,但有很多临时偏差。

了解令牌定义的最实用方法是使用命令面板中提供的“开发人员:检查 TM 范围”工具 (Ctrl+Shift+P)。当您将光标放在一个标记上时,它会向您显示描述该标记的“范围标签”。这些标签或多或少是人类可读的。

编辑 2020-07-24:从 VSCode 1.47(可能更早一点)开始,该命令称为“Developer: Inspect Editor Tokens and Scopes”。

例子:

在上面,我们可以看到return 关键字最具体地归类为keyword.control.flow.js。它位于大括号括起来的代码块 (meta.block.js) 内、函数定义内 (meta.function.js) 内、Javascript 源代码内 (source.js)。

范围标签的序列是最接近 VSCode 中标记的“含义”的东西。

为标记分配颜色

接下来,是将范围标签序列映射到颜色和字体样式的过程。这是由主题完成的。就我而言,我使用的是 Visual Studio Light,它在 light_vs.json 的 VSCode 源中定义。对于return 关键字,这是适用的片段:

        {
            "scope": "keyword.control",
            "settings": {
                "foreground": "#0000ff"
            }
        },

这基本上是说,范围标签以“keyword.control”开头的任何东西都应该是蓝色的。但是其他片段可能会覆盖这个片段; rules 有点复杂。为什么是蓝色?这是一种任意的审美选择。

为什么functionNaN 有相同的颜色?语法为它们分配了不同的范围标签(storage.type.function.jsconstant.language.nan.js),但碰巧您使用的主题(Dark+)为它们分配了相同的颜色(就像我的一样)。我觉得这是一个奇怪的选择,但只能推测原因。

自定义颜色

您没有问,但一个明显的后续问题是如何自定义这些颜色,例如为 functionNaN 提供不同的颜色。见this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多