YAML
DataGrip 使您能够使用 YAML 文件 ( .yml , .yaml ) 并支持以下功能:
语法高亮
您可以在 编辑器 | 配色方案 | YAML 页面的 设置 对话框中(Ctrl+Alt+S )更改 颜色设置。
您可以在 编辑器 | 代码样式 | YAML 页面的 设置 对话框中(Ctrl+Alt+S )访问与 YAML 相关的代码样式设置。
DataGrip 能检测出 YAML 文档中的重复键、未使用的 锚点等。
例如,您可以对包含 JSON schema 的 YAML 文档使用代码补全,或者完成锚点别名。
例如,您可以在 锚点和别名之间导航。
重命名重构 (例如,对 anchors 和 aliases)
DataGrip 会在您键入时保持缩进、序列标记、括号和引号。
让我们了解一下编辑器中可用的一些 YAML 特定功能。
锚点和别名
DataGrip 支持使用锚点和别名。 如果您在 YAML 文件中指定了一个新的 anchor,编辑器会显示一个警告,提示该 anchor 未被任何节点使用。

编辑器现在使您能够为此锚点 完成 别名。

要快速查找锚点的用法,将文本光标放在锚点上并按下 Ctrl+B。

DataGrip 支持 重命名重构锚点和别名:将文本光标放置在锚点上,然后按 Shift+F6。 或者,右键点击锚点并选择 。

使用 结构 工具窗口 (Alt+7) 快速浏览 YAML 文件。 要显示或隐藏 结构 工具窗口中重用锚点的元素,请点击 使用 别名子树子项树。

JSON schemas
DataGrip 支持使用 JSON schema 对 YAML 文件进行代码补全和检查。 DataGrip 可以自动推断模式(基于文件位置或结构),或者您也可以 手动选择。 例如,如果您在 .github/workflows 目录中有 GitHub Actions workflow 文件,DataGrip将基于从 schemastore.org自动加载的 github-workflow.json 模式建议其选项:

您可以使用 语言 | 架构和 DTD | 远程 JSON 架构 页面的 设置 对话框(Ctrl+Alt+S )管理加载 JSON 架构。
如果必要,您可以在 语言 | 架构和 DTD | JSON 架构映射 中指定所需的架构文件路径。
为文件选择一个 JSON schema
您可以为特定文件指定自定义模式。
点击状态栏中的 schema 切换器。

在打开的列表中,选择一个建议的模式或点击 新建架构映射…。 这将打开 JSON 架构映射 设置,您可以在其中为文件指定本地或远程架构。
从架构获取属性
如果 DataGrip 检测到您的 YAML 文件的架构,您可以使用专门的操作快速将其所有属性插入到该文件中,从而无需手动输入。
如果架构包含必需的属性,而您只想插入这些特定属性,请在文件中的任意位置按 Alt+Enter (显示上下文操作) 并选择 添加缺失的属性。
如果您想插入模式中可用的所有属性,请在文件中的任意位置按 Alt+Enter (显示上下文操作 )并选择 填写 JSON 架构中的所有属性。
使用 $schema 关键字
您还可以直接在文件中引用架构。
在文件顶部,输入
# $schema:。开始输入架构文件的名称。 您将获得从 schemastore.org 加载的架构名称补全。
如果您要使用本地 schema 文件,请指定相对于您要使用 schema 文件的位置的路径,例如,
# $schema: ./my-schema.json。 这将启用与使用远程模式时相同的编码辅助,包括检查、补全和属性填充操作。
复制密钥
DataGrip 提供了复制 YAML 文件中指定选项的完整路径的功能。 您可以通过两种方式执行此操作:
将文本光标放在所需的键上并按下 Ctrl+Alt+Shift+C。
将鼠标悬停在所需的键上,右键点击并选择 复制引用。

例如,在上面的图像中,将复制 default.server.port。
键入处理程序
编辑 YAML 文件时,DataGrip 会为您保持缩进、序列标记、括号和引号。 在以下示例中, <caret> 标记文本光标位置。
序列标记
在序列项后按 Enter 时,DataGrip 会开始一个新项并自动插入 - 标记:
如果在空项上再次按 Enter ,DataGrip 会移除标记,并将文本光标移动到父缩进级别,在嵌套序列中也是如此。
当序列项包含映射时,按 Enter 会在新的缩进行上继续该映射,而不会添加第二个标记,即使标记插入已开启也是如此:
要删除空项,请在 - 标记后面的空格之后按 Backspace。 DataGrip 会在一次操作中移除 - 及其后面的空格。 如果同一行中标记后面有一个值,DataGrip 仍会将该标记连同空格一起移除,并将值保留在原位:
缩进
按 Enter 时,DataGrip 会将新行保持在与当前结构匹配的缩进级别:
在没有值的键之后,新行会缩进到更深一级。
在键值对之后,新行会保持在同一级别。
在块标量指示符(
|)之后,新行会缩进到更深一级,后续行也会保持在该级别。
在块标量内部,新行会落在标准块缩进处,即键下方一级。 如果当前行被手动过度缩进,新行仍会使用标准块缩进,而不是与过度缩进的文本对齐。
如果在已完成条目下方仅包含空白的行上按 Enter ,DataGrip 会保留您手动设置的缩进,而不是重新对齐新行。
当您在尚无项的序列中的空行上键入 - 后跟一个空格时,DataGrip 会更正标记缩进。 开启 缩进序列值 选项时,标记会放在比父键更深一级的位置;关闭该选项时,标记会与父键对齐。 如果序列已包含项,标记会保持当前缩进。 您可以在 设置 对话框(Ctrl+Alt+S )的 编辑器 | 代码样式 | YAML 页面上找到此选项。
括号和引号
在键或值位置,DataGrip 会自动关闭流集合和带引号的标量。 键入 [、 {、 " 或 ' 时,DataGrip 会插入匹配字符,并将文本光标置于该对字符之间:
自动闭合仅适用于字符开始一个 YAML 结构标记的位置,例如新的键或值位置,或现有流集合内的某个点。 当文本光标位于纯标量文本内或紧随其后时,DataGrip 会将该字符作为普通文本插入,而不会关闭任何内容。
当您在相同字符之前键入闭合 ]、 } 或引号时,DataGrip 会将文本光标移到其后,而不是插入重复字符。 但是,如果下一个字符是未配对的引号,键入相同的引号字符会创建一对新字符,而不是越过现有字符。
要删除空对,请在两个字符之间按 Backspace ,DataGrip 会将两者都移除。
移动键和项
要移动键、嵌套块或序列项,请将文本光标置于其上,然后按 Ctrl+Shift+Up 或 Ctrl+Shift+Down。 DataGrip 会移动整个条目,包括其嵌套内容,并保持缩进正确:
如果选择多个条目,DataGrip 会将选择范围扩展到完整条目,并将它们作为一组移动。
粘贴
当您将内容粘贴到 YAML 文件中时,DataGrip 会将其调整为目标结构:
粘贴到序列中的纯文本行会成为单独的项,每个项都有自己的
-标记。如果粘贴的行以
-开头,或者混合了带前缀和不带前缀的行,DataGrip 会规范化这些标记,使每行恰好有一个标记。点分路径, 例如
spring.datasource.url, 会展开为嵌套键。多行块会重新缩进,使其第一行与文本光标缩进匹配,而内部行会保持其相对缩进。 空行保持为空。
当您直接粘贴到现有键前面时,DataGrip 会重新缩进粘贴的块,并将现有键保持在其原始列。
例如,在映射位置粘贴 spring.datasource.url:
要开启或关闭点分键展开,请使用 设置 对话框(Ctrl+Alt+S )的 编辑器 | 常规 | 智能键 | YAML 页面上的 粘贴时自动展开键序列 选项。