Visual Studio Code - 语法高亮颜色的含义

问题描述 投票:0回答:2

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

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

syntax visual-studio-code syntax-highlighting highlight
2个回答
4
投票

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

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

将文本分区为标记

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

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

编辑 2020 年 7 月 24 日:从 VSCode 1.47(可能更早一点)开始,该命令称为“开发人员:检查编辑器令牌和范围”。

示例:

在上面,我们可以看到

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”开头的任何内容都应具有蓝色。但其他片段可能会覆盖这个片段; 规则有些复杂。为什么是蓝色?这是一种任意的审美选择。

为什么

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

自定义颜色

您没有问,但一个明显的后续问题是如何自定义这些颜色,例如为

function
NaN
提供不同的颜色。请参阅此答案


0
投票

以下内容至少大致适用于 Python。

Orange = string
yellow = function/method
brownish green = comment
very light green = number, "+-*/=><"
bright green = class, module
white = modules unknown to VS code? Functions from modules (e.g., the ".sort" in "np.sort")
light blue = variable
dark blue = "class", "def", "False", "not", "None", "in", ... (= "other reserved words"?)
purple = command (while, for, if, try, except, return, ...)

我有一些变量是白色的,没有明显的原因。请改进这个答案。

© www.soinside.com 2019 - 2024. All rights reserved.