PyCharm 2026.3 Help

YAML

PyCharm 允许您处理 YAML 文件( .yml 、 .yaml ),并支持以下功能:

让我们了解编辑器中可用的一些 YAML 特定功能。

锚点和别名

PyCharm 支持使用锚点和别名。 如果您在 YAML 文件中指定了新的锚点,编辑器会显示一条警告,提示该锚点未被任何节点使用。

YAML:未使用的锚点警告

编辑器现在允许您为该锚点的别名进行 补全。

YAML:补全别名

要快速查找某个锚点的用法,请将插入符号置于该锚点上并按 Ctrl+B。

YAML:导航到别名

PyCharm 支持对锚点和别名执行 重命名重构 :将插入符号置于锚点上并按 Shift+F6。 或者,右键点击该锚点并选择 重构 | 重命名。

重命名 YAML 锚点

使用 结构 工具窗口(Alt+7 )可在 YAML 文件中快速导航。 要在 结构 工具窗口中显示或隐藏复用锚点的元素,请点击 查看选项 ,或使用 别名子树组群树结构图谱结构层次结构目录结构子结构树结构目录树结构子树结构关系图树类别结构图表体系子树结构结构图区别目录树构树表族子树组织系统树结构编目示意图树关系关系索引集结构结构化目录图类别目录结构集结构表格图示关系表子结构体关系体系。

YAML 结构视图

JSON 架构

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

YAML:根据架构补全

您可以使用 设置 对话框(Ctrl+Alt+S )的 语言 & 框架 | 架构与 DTD | 远程 JSON 架构 页面管理 JSON 架构的加载。

如有需要,您可以在 语言 & 框架 | 架构与 DTD | JSON 架构映射 中指定所需架构文件的路径。

为文件选择 JSON 架构

您可以为特定文件指定自定义架构。

  1. 点击状态栏中的架构切换器。

    为文件选择架构
  2. 在打开的列表中,选择一个建议的架构,或点击 新建 Schema 映射…。 这将打开 JSON 架构映射 设置,您可以在其中为您的文件指定本地或远程架构。

从架构获取属性

如果 PyCharm 检测到您的 YAML 文件的架构,您可以使用专用操作将其所有属性快速插入该文件,从而无需手动输入。

  • 如果架构包含必需的属性,并且您只想插入这些特定属性,请在文件中的任意位置按 Alt+Enter (显示上下文操作 ),然后选择 添加缺失的属性。

  • 如果您想插入架构中可用的所有属性,请在文件中的任意位置按 Alt+Enter (显示上下文操作 ),然后选择 从 JSON 架构填充所有属性。

使用 $schema 关键字

您还可以在文件中直接引用架构。

  1. 在文件顶部输入 # $schema:。

  2. 开始键入架构文件的名称。 将获得从 schemastore.org 加载的架构名称补全。

    如果您想使用本地架构文件,请指定相对于要使用该架构的文件的路径,例如 # $schema: ./my-schema.json。 这样将启用与使用远程架构时相同的代码辅助功能,包括检查、补全和属性填充操作。

    来自本地架构的补全

复制键

PyCharm 提供复制 YAML 文件中某个特定选项完整路径的功能。 您可以通过两种方式执行此操作:

  • 将插入符号置于所需键上并按 Ctrl+Alt+Shift+C。

  • 将鼠标悬停在所需键上,右键点击它并选择 复制引用。

YAML:复制引用

例如,在上图中,将复制 default.server.port。

输入处理程序

编辑 YAML 文件时,PyCharm 会为您保持缩进、序列标记、括号和引号。 在以下示例中, <caret> 标记文本光标位置。

序列标记

在序列项后按 Enter 时,PyCharm 会开始一个新项并自动插入 - 标记:

services: - nginx<caret>
services: - nginx - <caret>

如果在空项上再次按 Enter ,PyCharm 会移除标记并将文本光标移动到父缩进级别,包括嵌套序列中的情况。

当序列项包含映射时,按 Enter 会在新的缩进行上继续该映射,而不会添加第二个标记,即使标记插入已开启:

services: - name: web<caret> - name: db
services: - name: web <caret> - name: db

要删除空项,请在跟随 - 标记的空格之后按 Backspace。 PyCharm 会在一次操作中移除 - 及其后面的空格。 如果值在同一行中跟在标记之后,PyCharm 仍会连同空格一起移除该标记,并将值保留在原位:

services: - <caret>nginx
services: <caret>nginx

缩进

按 Enter 时,PyCharm 会将新行保持在与当前结构匹配的缩进级别:

  • 在没有值的键后,新行会缩进到更深一级。

  • 在键值对后,新行保持在同一级别。

  • 在块标量指示符(| )后,新行会缩进到更深一级,后续行保持在该级别。

database:<caret>
database: <caret>

在块标量内,新行会位于标准块缩进处,即键下方一级。 如果当前行是手动过度缩进的,新行仍会使用标准块缩进,而不是与过度缩进的文本对齐。

如果在已完成条目下方仅包含空白符的行上按 Enter ,PyCharm 会保留手动设置的缩进,而不是重新对齐新行。

当在尚无项的序列中的空行上键入 - 后跟一个空格时,PyCharm 会更正标记缩进。 启用 缩进序列值 选项时,标记会放在比父键更深一级的位置; 关闭该选项时,标记会与父键对齐。 如果序列已包含项,标记会保持当前缩进。 可以在 编辑器 | 代码风格 | YAML 页面上的 设置 对话框(Ctrl+Alt+S )中找到此选项。

括号和引号

在键或值位置,PyCharm 会自动闭合流集合和带引号的标量。 键入 [、 {、 " 或 ' 时,PyCharm 会插入匹配字符并将文本光标放在这一对字符之间:

ports: <caret>
ports: [<caret>]

自动闭合仅在该字符开始 YAML 结构标记的位置适用,例如新的键或值位置,或现有流集合内的某个点。 当文本光标位于纯标量文本内或紧接其后时,PyCharm 会将该字符作为普通文本插入,且不进行任何闭合。

当在相同字符前面键入闭合 ]、 } 或引号时,PyCharm 会将文本光标移过该字符,而不是插入重复字符。 但是,如果下一个字符是未成对的引号,键入相同的引号字符会创建一对新的引号,而不是越过现有引号。

要删除空对,请在两个字符之间按 Backspace ,PyCharm 会将两者都移除。

移动键和项

要移动键、嵌套块或序列项,请将文本光标放在其上,然后按 Ctrl+Shift+Up 或 Ctrl+Shift+Down。 PyCharm 会移动整个条目,包括其嵌套内容,并保持缩进正确:

services: web<caret>: image: nginx db: image: postgres
services: db: image: postgres web<caret>: image: nginx

如果选择多个条目,PyCharm 会将选择范围扩展到完整条目并将它们作为一组移动。

粘贴

将内容粘贴到 YAML 文件中时,PyCharm 会将其调整为目标结构:

  • 粘贴到序列中的普通行会变成单独的项,每项都有自己的 - 标记。

  • 如果粘贴的行以 - 开头,或混合了带前缀和不带前缀的行,PyCharm 会规范化标记,使每行恰好有一个标记。

  • 点分路径(如 spring.datasource.url )会展开为嵌套键。

  • 多行块会重新缩进,使其第一行与文本光标缩进匹配,而内部行保持其相对缩进。 空行保持为空。

  • 直接粘贴到现有键前面时,PyCharm 会重新缩进粘贴的块,并将现有键保持在其原始列。

例如,在映射位置粘贴 spring.datasource.url:

config: <caret>
config: spring: datasource: url:<caret>

要开启或关闭点分键展开,请使用 粘贴时自动展开密钥序列 选项,它位于 编辑器 | 常规 | 智能键 | YAML 页面上的 设置 对话框(Ctrl+Alt+S )中。

2026年 11月 3日