yaml 文件默认不支持折叠,因原生语法无折叠规则;需安装 yamlmate 插件并启用 fold_on_indent: true,且确保缩进规范、语法正确识别。

YAML 文件默认不支持折叠,必须装插件才生效
Sublime Text 原生 YAML 语法(YAML.sublime-syntax)不带折叠规则,打开 deployment.yaml 后按 Ctrl+Shift+[ 没反应,不是快捷键失效,是语法层根本没定义可折叠结构。光标停在 spec: 行也折不了,因为作用域里没有 meta.block 或 foldingStartMarker。
- 最稳方案:装
YAMLMate插件(非YAMLNav,后者已停更),它基于缩进自动识别块级结构,无需改语法文件 - 安装后确认
"fold_on_indent": true已启用(Preferences → Settings → 用户配置里加这一行) - 若用 Sublime Text 4,别去改老式
.tmLanguage文件,.sublime-syntax才是当前标准 - 折叠触发点必须是缩进变化的首行,比如
containers:或- name:,空行或注释行无效
YAML 导航(跳转到 key / 折叠块)依赖作用域识别
想用 Ctrl+R 快速跳到 metadata 或 env 字段,前提是这些 key 被解析为符号(symbol),而原生 YAML 不把冒号前的字符串当 symbol 处理——所以搜不到。
-
YAMLMate自带符号索引,装完重启后Ctrl+R就能列出所有 top-level key(如apiVersion、kind) - 若仍不出现,检查右下角是否真设为
YAML(不是Plain Text或YAML (Ansible)),不同语法的作用域名不同 - 手动触发符号刷新:按
Ctrl+Shift+P→ 输入Index Files→ 回车,强制重建符号表 - 避免在字段值里写
{{ }}或$(),这些会干扰作用域划分,导致Ctrl+R只显示部分 key
复合后缀(如 docker-compose.prod.yml)需手动绑定语法
装了 YAML for Kubernetes 或 YAML Language Support,但 docker-compose.prod.yml 打开还是 Plain Text,不是插件没装好,是 Sublime 默认只认 .yml 和 .yaml 后缀。
- 先打开该文件 → 点右下角语言名 →
Open all with current extension as…→ 选对应语法(如YAML (Docker Compose)) - 若选项里没有,说明插件没注册这个后缀,得进插件目录(
Packages/YAML Language Support/YAML (Docker Compose).sublime-syntax) - 编辑该文件,在
file_extensions数组里加一行:- docker-compose.prod.yml - 保存后按
Ctrl+Shift+P→ 输入Reload Syntax强制重载,否则修改不生效
折叠与导航失效的常见连锁原因
一个 YAML 文件里缩进混用 Tab 和空格,或者某处少一个空格(比如 ports: 下漏了空格),高亮和折叠会从那行起全部失效——不是插件崩了,是 YAML 解析器主动放弃整块解析,作用域链断裂,Ctrl+R 和 Ctrl+Shift+[ 都失去依据。
- 务必开启
"detect_indentation": true(Preferences → Settings),让 Sublime 自动识别当前文件缩进风格 - 禁用
"translate_tabs_to_spaces": false,否则粘贴进来的 Tab 会被悄悄转成空格,破坏原始结构 - 校验缩进一致性:选中全文 →
Ctrl+Shift+P→Convert Indent to Spaces(或 Tabs),统一后再试折叠 - 真正卡住时,先关掉所有插件,只留
YAMLMate和YAML,排除插件冲突
YAML 的结构感知能力完全依赖语法定义和缩进洁癖,插件再强也救不了格式错误的第一行。别指望“装完就自动好”,每一份 .yaml 文件都得先过缩进和空格这关,才能谈导航和折叠。











