在Visual Studio代码中自定义语法突出显示

Mik*_*hke 19 visual-studio-code vscode-extensions

我目前正在尝试为新文件类型(ANTLR)编写扩展,并想知道如何在Visual Studio代码中更改用于语法突出显示的颜色.对我而言,它看起来好像没有在扩展中定义,而是在其他地方定义.没有颜色的首选项输入,也没有找到定义它的CSS文件(由于vscode正在使用Electron,我期望它).我还查看了生成的设置文件vscode和随附的文件,但也没有任何线索.网络搜索也没有帮助.所以,我现在有点迷路了.

有人可以给我一些提示或指向相关的文档吗?

Lau*_*aur 18

派对有点晚了,但我会在这里加上这个,以免下一个人花几个小时的搜索.

这里有两个概念:

  • 语言语法,将文本文件转换为具有不同范围的标记,以及
  • 主题,以(希望)令人愉悦的方式着色这些范围.

如果您正在编写自己的语法,或者从TextMate等转换,那么您可能会使用与主题定义的范围不同的范围.在这种情况下,即使实际定义了令牌,也不会明确区分您定义的令牌.

有两种方法可以解决这个问题.首先是,使用自定义范围扩展主题并根据需要为它们着色.除非每个使用您语言的人都喜欢您的配色方案,否则这不是一个好方法.另一种是,使用VSCode和主题作者已经定义和着色的(有限集合)范围.很有可能,您的语言在您选择的主题中看起来很好,而在其他主题中则很好.

举个例子,这里是comment默认的暗VSCode主题定义的范围.

"name": "Dark Visual Studio",
"settings": [
    {
        "scope": "comment",
        "settings": {
            "foreground": "#608b4e"
        }
    },
Run Code Online (Sandbox Code Playgroud)

这是C++语法中的等效语言片段:

"comments": {
    "patterns": [
        {
            "captures": {
                "0": {
                    "name": "punctuation.definition.comment.java"
                }
            },
            "match": "/\\*\\*/",
            "name": "comment.block.empty.java"
        },
Run Code Online (Sandbox Code Playgroud)

基本上,语言根据comment需要定义了多个令牌,并且由于主题表示comment.*将是绿色,因此它们都被着色为相同的颜色.


mem*_*lex 9

无需修补主题,来自官方文档

要调整编辑器的语法高亮颜色,请在您的用户设置 settings.json 文件中使用 editor.tokenColorCustomizations

除了简单的令牌自定义之外,您还可以使用稍微复杂的设置完全覆盖 TextMate 规则,例如:

"editor.tokenColorCustomizations": {"textMateRules": [{
        "scope": "keyword.control.ref.latex",
        "settings": {
            "foreground": "#FF0000"
        }
    }]}
Run Code Online (Sandbox Code Playgroud)


Wos*_*osi 5

语法突出显示规则存储在.plist文件中(或另选地存储在文件中.tmLanguage)。在这些文件中,声明了不同的令牌类型以突出显示语法:

  • 什么是关键字?
  • 什么是字符串文字?
  • 什么是评论?
  • 等等

看看这里以获得有关它的更多信息:https : //code.visualstudio.com/Docs/customization/colorizer

您没有在.plist文件中定义颜色!

标记类型和颜色之间的关系在颜色主题声明中完成。

https://code.visualstudio.com/Docs/customization/themes以及此处如何在Visual Studio Code中添加主题以了解更多信息

通常,当您尝试扩展VSCode时,此文档也很有帮助:https ://code.visualstudio.com/docs/extensionAPI/overview

  • 请注意,您可能会遇到`.tmLanguage`文件而不是`.plist`文件,这是基于XML的替代语法。在功能上,它们实现了相同的目标。您只需要使用一种文件格式或另一种文件格式。 (3认同)
  • 谢谢,但是我已经阅读了所有这些文件。但是,没有任何东西可以说明您如何更改颜色。这里有几句话,介绍如何导入主题,如何从市场上下载以及什么,但是没有地方说明如何自定义主题,甚至从头开始创建主题。 (3认同)