CClash 中文社区选择客户端 ↗
首页/博客
操作教程

Clash 配置缩进如何保持一致

Clash 配置缩进如何保持一致。了解适用条件、操作步骤与常见问题的排查方法。

编辑部 · 更新 2026-10-04

Clash 配置以 YAML 字符流保存。YAML 1.2.2 规定:块状集合用缩进来划定作用域,并且每条条目单独起行。所谓保持缩进一致,是指在整份流里用同一套缩进空格表达父子关系,而不是有的层级靠空格、有的层级靠制表符或靠另一种宽度“看起来整齐”。

适用条件

只针对块状样式。规范把缩进空格与行内分隔空格分成不同产生式:前者出现在换行之后、用来表达结构,后者出现在一行之内、用来分开指示符与内容。块序列用短横线加空格标记条目,块映射用冒号加空格标记键值。流式样式改用方括号、花括号等显式指示符表示范围,并不靠缩进划定作用域,因此“一致”首先约束块状片段。同一文件可以混用两种样式,混用时块状部分仍必须内部对齐。

缩进量属于呈现细节:转储时处理器才决定用多少空格、何种节点样式。加载时,构造原生数据不得依赖缩进层数、注释、键顺序或节点样式。但解析必须从字符流恢复序列化树;缩进一旦自相矛盾,输入就不成形,解析失败。

判断是否一致的操作依据

同一父节点下的兄弟条目应落在同一列。子节点必须比父节点使用更多缩进空格,回到更少缩进则关闭当前作用域。规范用“缩进决定作用域”说明嵌套标量与集合如何挂到某个键下,依据是相对列位置,不是行号。

缩进只能由空格组成。为可移植性,缩进中不得出现制表符,因为不同系统对制表符宽度处理不同。分隔空格(短横线后、冒号后的那个空格)不计入“又缩进了一层”。把分隔空格当成新层,或把新层写成与兄弟同一列,都会破坏一致。

选定一种宽度后,在该文档的块状结构中沿用。规范并不把“必须两个空格”写成语言常数,但呈现一旦选定基准,后续嵌套应相对该基准递增,而不能同一层有时深有时浅。紧凑写法允许键值紧跟在短横线、冒号或问号之后,此时下一行的缩进相对该条目,而不是相对文件最左列。

注释以 # 开头,解析阶段丢弃,不能靠注释列去“补齐”集合。块标量用 | 或 >,标题里可含块缩进指示,其正文缩进相对标题解释,须与周围映射的缩进分开判断。空行、行前缀和折行另有产生式,它们改变的是空白如何进入标量,不能用来对齐兄弟键。

失败时的下一步

解析因不成形失败时,先查失败点附近是否把制表符写进行首,再核对该处兄弟是否错列、子节点是否并未更深。若空行或块标量干扰判断,把该片段改成流式序列或流式映射,用显式指示符代替缩进,以确认本意中的树是否仍可表达。流成形之后,再进入锚点别名是否标识、标签是否可解析等后续加载失败点,不要把类型问题当成缩进不一致。

https://yaml.org/spec/1.2.2/