【问题标题】:Applying syntax coloring to strings in plain text files in VSC在 VSC 中对纯文本文件中的字符串应用语法着色
【发布时间】:2021-06-23 00:52:15
【问题描述】:

试图找到一种方法将语法颜色方案应用于纯文本文件中的单个代码字符串 sn-ps。

通常在工作区中,我有一两个文本文件,其中包含关于要做的事情、要探索的想法等的注释。这些注释通常包含代码示例,无论是 javascript sn-p、CSS 概念、html 字符串等。

如果能够突出显示一个字符串,右键单击并选择类型(html、css、js 等)并将该项目的默认颜色语法应用于该字符串,那就太好了。

有没有一种内置到 VSC 或可用扩展的方法来执行此操作?

【问题讨论】:

    标签: visual-studio-code syntax-highlighting


    【解决方案1】:

    你正在寻找 4 种语言和语法贡献



    关于问题:

    有一种方法可以通过扩展来实现,而扩展实际上是唯一的方法。有一大堆功能可以让人们突出显示语法,它们是突出语法的不同方式,用于不同的事情。突出显示语法可能是一个相对简单的过程,但是,它也可能变得相当复杂。在 VSCode 中突出显示语法时,它们是您将仅使用 VSCode 贡献和 JSON 文件的区域,它们是您需要使用 VSCode 扩展 API 的区域,然后是 TextMate API 的区域开始融入 VSCode 扩展 API、VSCode 扩展清单和 VSCode JSON 主题文件。 TextMate 是事情变得更先进的地方。我将在下面进行更多解释,我还将在其中发布我刚才提到的几个主题的链接。

    学习 VSCode 语法高亮肯定伴随着小的学习曲线。它不是一条可怕的曲线,但它是可以通知的,如果这有意义的话——当你学习它时,它也是非常有益的。


    第 1 部分:Visual Studio Code 的扩展清单

    Extension Manifest 基本上是 package.json 文件的 VSCode 版本,您可以将其视为“定义您的核心结构延期”。扩展清单不是一个糟糕的演出。如果您正在做一些简单的事情,就像您要求的那样,您只需将您正在做的简单事情添加到您的 contributes 对象中,而无需实现整个扩展框架或多个扩展您并不真正需要的 API。

    这是一个 VSCode 主题的扩展清单示例。

    
    // package.json
    
    
    // An actual Extension Manifest for a theme I am working on
    
    {
      "name": "Extension Name",
      "description": "This is a theme blah blah blah",
      "version": "1.2.3", 
    
      "repository": {
        "type": "git",
        "url": "git+https://github.com/W3Dojo/Uchigatana.git"
      },
      "engines": {
        "vscode": "^1.57.0"
      },
      "categories": [
        "Themes"
      ],
      "contributes": {
        "themes": [
          {
            "label": "Uchigatana",
            "uiTheme": "vs-dark",
            "path": "./themes/Uchigatana.json"
          },
          {
            "label": "Tachi",
            "uiTheme": "hc-black",
            "path": "./themes/Tachi.json"
          },
        ]
      },
      "devDependencies": {
        "prettier": "2.3.1"
      }
    }
    
    
    作者注:

    “以上是我刚刚打开的主题的实际扩展清单。我发现现实生活中的示例比从其他来源复制和粘贴代码更好。”



    您看到 "contributes":{ ect... }" 属性对象了吗?嗯,这个属性是每个扩展的核心,你所做的任何语法高亮都将在这里以一种或另一种形式定义。

    因此,您将在此处进一步了解语法高亮:


    SYNTAX HIGHLIGHTING (Official VSCode Website)

    CONTRIBUTES OBJECT (Official VSCode Website)

    EXTENSION MANIFEST (Official VSCode Website)

    TextMate GRAMMARS (TextMate Official Website)




    最后,您需要了解 3 个不同的主题,这些主题将帮助您实现目标:

    1. TextMate 语法贡献:“语法链接在上面”
    2. Language Definitions:“这是一个链接到投稿页面上的锚点,但这可能对你有用”。
    3. TextMate Tokens & Scopes:“这是指向与语法高亮链接位于同一页面上的锚点的链接,但这是您想要阅读的主题。”

    祝你好运

    【讨论】:

    • 感谢扩展创建信息。这是否意味着今天没有合适的扩展可用?
    • 如果您正在寻找一个可以在编辑器中编辑文本的 GUI,那么我所知道的就是这样。如果有,则需要文件类型支持富文本格式。语法高亮的工作方式,或者至少我理解的语法高亮是通过 AST 解析,VSCode 使用 text-mate。您正在寻找的是一个文字处理器,带有处理代码的扩展。我使用 Google-Docs 是因为我运行 Debian 的非 GUI 服务器版本,但 Microsoft Office 可能有更好的扩展来突出显示代码等。
    • 我无法想象一个编辑器会支持富文本格式,因为文本必须携带额外的数据,我会想象这样的功能在一些开发人员中会非常不受欢迎。
    • 谢谢。我真的不想使用单独的编辑器,只是想在我的笔记中为 sn-ps 着色,以便在扫描笔记时更容易找到它们。想把它全部保存在 VCS 中。
    • 您可以查看在 2021 年 5 月发布的笔记本电脑所提供的功能,VSC v(1.57.1​​) 可能与您的需求相符。我没有使用过它,但我知道它是为了提供编辑通常不提供的东西而创建的。祝你好运汤姆
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多