XML折叠需先启用折叠功能并确保语法为XML,再配置fold_xml和fold_by_level参数;快捷键按层级或标签精准折叠展开,依赖语法高亮作用域识别。

XML折叠不生效,先确认语法和设置是否就位
Sublime 默认不启用 XML 折叠,不是插件没装对,而是原生语法定义里没开 folding 规则。即使你装了 XML Tools,它只管格式化,不管折叠逻辑。
必须手动开启:菜单 View → Folding → Enable Folding(确保勾选);再检查右下角状态栏显示的是 XML(带图标的那个),不是 XML (Text) 或 Plain Text。点它 → 搜索 XML → 选第一个。
- 如果仍无效,打开
Preferences → Package Settings → XML → Settings – User,写入: { "fold_by_level": true, "fold_xml": true }- 改完保存,重启 Sublime 或重载语法(
Ctrl+Shift+P→Set Syntax: XML)
折叠快捷键和层级控制怎么用才准
Sublime 的 XML 折叠不是“光标在哪折哪”,而是按结构和层级响应。不同快捷键作用范围完全不同,混用就会失效。
-
Ctrl+Shift+[(Win/Linux)或Cmd+Shift+[(macOS):只折叠光标所在最内层标签对(比如只折一个)...
-
Ctrl+K, Ctrl+1到Ctrl+K, Ctrl+9:按缩进层级折叠,Ctrl+K, Ctrl+1折一级(如所有),Ctrl+K, Ctrl+2折二级(如每个内的) -
Ctrl+K, Ctrl+0:折叠所有可识别的折叠区域(适合快速收起整个结构) - 注意:
Ctrl+K, Ctrl+J是展开全部,不是Ctrl+K, Ctrl+U—— 后者是无效绑定
为什么 Ctrl+Shift+] 展不开选中的折叠块
这个操作根本不要求“选中”,反而选中会干扰它。它只认一个条件:光标必须落在已折叠行的**首行**(即带三角图标那行),且该行必须被正确识别为 XML 标签起始行。
- 光标在折叠块内部、空行、注释行,或当前语法是
HTML而非XML,都会静默失败 - 某些插件(如旧版 Vue Syntax Highlight)会污染作用域,导致
meta.tag.xml未被识别,折叠标记虽在,但无法触发展开逻辑 - 若你用
fold_selection(Ctrl+Shift+Alt+[)手动折叠过,它不支持反向命令,只能用Ctrl+Shift+Alt+]恢复(仅对该类折叠有效)
想只展开某几处,又不想全展?得靠命令面板精准触发
原生没有“展开第3个 ”这种快捷方式。必须进命令面板,选对应语义动作:
-
Ctrl+Shift+P→ 输入Unfold Tag:只展开 HTML/XML 标签块(对、有效)Unfold Level 2:只展开嵌套第二层结构(比如类里方法、里的)Unfold Function在 Vue 单文件组件里常失效——因为<script></script>块未被识别为独立作用域;临时切到JavaScript语法可绕过- 注意:
Unfold All会清掉所有手动折叠状态,包括fold_selection创建的,慎用真正容易被忽略的是:XML 折叠行为完全依赖语法高亮引擎对作用域的识别精度。一旦标签写法不规范(比如属性值没引号、
&没转义、根节点缺失),Sublime 就可能把整段当纯文本处理,meta.tag.xml作用域丢失,折叠功能直接退化为摆设。别急着调快捷键,先用python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')"验证合法性。











