如何在 VSCode 中为 JSONL 配置语法突出显示 — "JSON-Lines" — 当文件类型不受支持时

How to configure syntax highlighting in VSCode for JSONL — "JSON-Lines" — when the file type isn't supported

我正在使用实现文件扩展名 .jsonlJSONL ("JSON Lines") 文件,因此我想知道是否有办法为 Visual Studio 代码添加支持 jsonl 当编辑器在技术上不支持该文件类型时?

我在想是否可以为 VS Code 添加支持?

这里推荐,应该搜索一个扩展,为编辑器添加对 JSON 行 (.jsonl) 文件的支持(每个recommendation),然而,令我沮丧的是,在撰写此问题时,不存在 VSCode 扩展,它增加了对 .jsonl 文件的支持。

我还在 Marketplace 中搜索了“JSON Lines”和“.jsonl”,再次搜索没有return任何有用的结果。


2021 年 7 月 21 日 @ 04:08 UTC — 编辑:“添加了另一个可能的解决方案”

支持不受支持的文件类型的可能解决方案


在回答另一个关于 “V.S. 代码中的语言支持” 的问题时,我想起了这个 'Q & A',我意识到有一个可能有效的解决方案。如果作者还没有找到解决方案,那么我建议他们尝试这个,如果其他人在这个问题上遇到问题,希望添加对不受支持的语言的支持。

首先,如果您要添加的语言和/或文件类型是完全唯一的,那么此解决方案将不起作用;此外;如果能够获得支持,可能不是完全支持,也可能存在其他问题。让我举个例子,帮助你完全理解我想告诉你的是什么。

示例:


To start, let me show you the syntax for the solution. This is a setting used in V.S. Code's settings.json file — it can be placed in either the user's, or the workspace's implementation of the settings.json file.
   // "./.vscode/settings.json"

   "files.associations": {
       "json": "jsonc"
   },

"Hypothetically, lets say V.S. Code does not support the JSONC file type — 'JSON with Comments'. If the previous statement were true, which it isn't, but if it were, then this solution would work, however, if you have JSONC files already filled with data, then you will likely get errors, as the JSONC file type is used to implement comments in a JSON file, however, V.S. Code's JSON language does not support comments, and the editor will display errors for every comment that there is in a JSONC document, because when you configure your editor this way, V.S. code treats JSONC files as JSON files."



"There are other instances where using this configuration works better. Since we already used JSONC as an example, I'll give you a real world example, where the File-Associations Setting is used to support comments in .json (JSON) files — remember, the above was a hypothetical example, this one is an actual example practiced by developers."
"Adding comments to JSON file is simple, and quick, using the File Association Setting, simple invert the configuration from the code block above, so that the settings configuration looks like the example below. If you type the configuration into your .vscode/settings.json file, you will find that V.S. Code won't complain when you add a comment to a JSON file anymore.
    // "./.vscode/settings.json"  

    "files.associations": {
        "jsonc": "json"
    }, 
基本上,简而言之,使用文件关联 (file.associations) 设置,您可能会,也可能不会,能够获得一些支持,可能是有限的支持,或者可能是完全的支持。与添加对 V.S 的支持相比,它很容易尝试,而且速度更快,工作量也更少。整个编程语言或数据文件类型的代码。

(编辑:2021 年 12 月 4 日)


我想在这里插入我一直在学习C++ class,我使用CLang-format-12 对于我的格式化程序。 CLang-Format需要用户在项目中实现一个.clang-format文件来自定义CLang-format的配置(如果你的熟悉JS,相当于ESLint的一个.eslintrc文件)。有时 VS-Code 会自动检测文件为 YAML 格式,这是准确的,但有时它会检测为 python???我不写 python,但语法中的某些内容似乎 python' 对 "VSCode 自动检测有点害羞文件格式特征,有时它会检测到它是 MD,但它不是 markdown 格式。它采用 YAML 格式,但从技术上讲它不是 YAML 文档,但是,使用 file.associations设置我能够准确地获得对文件的支持。

仅供参考,VSCode 实际上会尽力自行添加支持,并检测文件的格式以及 data-format/programming-language grammar,它可以访问,将适用于您尝试使用的文件,但有时它需要一些帮助。正如我已经说过的,有时一种文件格式可以工作,但支持可能会受到限制,您将始终需要告诉 VSCode 在支持受限时哪些文件类型可以工作。



2021 年 6 月 23 日 @ 22:45 UTC - 原始 POST

在 V.S 中支持 JSONL 的解决方案。代码


没有人在 VSCode 中创建对 JSONL 文件的支持。像你一样,我找不到为 JSON 行或 JSONL 文件添加语言支持的扩展。在 VSCode 中获得支持的唯一方法是将支持添加到 VSCode。 VSCode 为用户提供定义语言所需的工具。他们提供的工具与 MS VSCode 开发团队用来定义语言的工具相同,换句话说,这些都是很好的工具,你可以用它们做一些很酷的事情。如果它是一门完整的语言,这可能不值得考虑,但事实并非如此,它只是对现有数据类型的一些小补充。最难的部分是阅读 VSCode 文档以了解如何使用扩展清单中的 Contributes 属性,它只是一个美化的 package.json 文件。

我知道没有人喜欢做额外的工作,尤其是当工作量比他们多时,但我向你保证,一旦你了解了 VSCode 扩展清单及其贡献属性的基础知识,加上一点有关 TextMate 工作原理的信息,您可以在不到几个小时内完成您想做的事情。回报也是巨大的,学习如何制作 VSCode 扩展是我非常高兴做出的决定,我几乎每天都在使用这些知识。此外,这是您获得支持的唯一途径。



这里有几个不错的起点:


LANGUAGE DEFINITIONS (Official VSCode Website)
SYNTAX HIGHLIGHTING (Official VSCode Website)
CONTRIBUTES OBJECT (Official VSCode Website)
EXTENSION MANIFEST (Official VSCode Website)
TEXTMATE GRAMMARS DOCS (TextMate Official Website)
TEXTMATE TOKENS/SCOPES IN VSCODE (Official VSCode Website)



最后说明:

您唯一的选择是给 JSON 行 的负责人发电子邮件,询问他们建议使用的编辑器,或询问他们是否计划在将来增加对 VSCode 的支持。