You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS Code的Jupyter笔记本中启用自定义YAML魔法的语法高亮?

在VS Code Jupyter笔记本中启用YAML单元格语言选项的解决方案

问题描述

我在VS Code的Jupyter笔记本中使用自定义魔法命令,通过Python解释器运行不同语言的单元格。针对DuckDB的SQL,用%%duck_magic开头后,可在右下角单元格语言下拉选择"SQL",但自定义的%%yaml_magic对应的"YAML"选项并未出现在下拉列表中。

环境信息

  • VS Code版本:1.92.0
  • Microsoft Jupyter扩展版本:v2023.11.1100101639
  • Red Hat YAML扩展版本:v1.15.0
  • Python版本:3.10.11

复现步骤

  1. 在VS Code中新建Jupyter笔记本
  2. 添加含%%yaml_magic的单元格(或空单元格)
  3. 点击右下角「选择单元格语言模式」下拉菜单
  4. 发现"YAML"不在列表中,但"SQL"等其他非Python语言可选

已尝试方案

  • 临时替代方案:复制YAML语法高亮规则,修改tmLanguage.json覆盖Ruby语言扩展,选择Ruby可获得类YAML语法,但存在缩进问题,属于临时方案
  • 重载测试:执行「Developer: Reload Window」时,下拉菜单短暂显示YAML等语言选项,但重载完成后消失

解决方案

1. 配置VS Code支持YAML笔记本语言

打开VS Code设置(快捷键Ctrl+,/Cmd+,),搜索notebook.supportedLanguages,点击「编辑 in settings.json」,将yaml添加到支持列表中:

"notebook.supportedLanguages": [
    "yaml",
    "python",
    "sql",
    // 保留其他你需要的语言
]

保存配置后执行「Developer: Reload Window」,YAML选项会出现在单元格语言下拉列表中。

2. 为自定义魔法关联YAML语言

在你的自定义魔法代码中,明确关联YAML语言类型,让VS Code自动识别:

from IPython.core.magic import register_cell_magic
import yaml

@register_cell_magic
def yaml_magic(line, cell):
    # 处理YAML内容的逻辑
    try:
        data = yaml.safe_load(cell)
        print("解析后的YAML数据:", data)
        return data
    except yaml.YAMLError as e:
        print(f"YAML解析错误:{e}")

# 加载扩展时关联语言
def load_ipython_extension(ipython):
    ipython.register_magic_function(yaml_magic, 'cell')
    # 为魔法单元格指定YAML语言格式
    ipython.display_formatter.formatters['text/yaml'].enabled = True

将这段代码保存为.py文件,在Jupyter笔记本中通过%load_ext 文件名加载后,使用%%yaml_magic的单元格会自动应用YAML语法高亮,同时YAML选项也会出现在语言下拉中。

3. 排查扩展兼容性

  • 确保Red Hat YAML扩展已激活,暂时禁用其他无关扩展,重新加载窗口测试
  • 更新Microsoft Jupyter扩展到最新版本,或回退到稳定版本(比如v2023.10.x),排查版本冲突问题

内容的提问来源于stack exchange,提问作者snowguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:26:03