EditorConfig 在 Sublime Text 中需满足插件安装、依赖可用、文件规范、设置不冲突等全部条件才生效;任一环节缺失(如 editorconfig-core-py 未配置、detect_indentation 未关闭)将导致 indent_style 和 end_of_line 静默失效。

EditorConfig 在 Sublime Text 中不是“装了就生效”,它依赖一整条加载链:文件位置正确、插件可用、Sublime 自身设置不冲突、语言插件不覆盖——任一环节断掉,indent_style 和 end_of_line 就会静默失效。
EditorConfig 插件必须手动安装且依赖 editorconfig-core-py
Package Control 安装的 EditorConfig 插件本身不带解析引擎,它调用系统命令 editorconfig-core-py 来读取和合并配置。如果该命令不可用,插件会降级为不工作,但 Sublime 日志里通常只报“no config found”,不会提示缺失依赖。
- macOS(尤其是 M1/M2)用户:用 Homebrew 安装后,需确认
which editorconfig-core-py有输出;若无,把/opt/homebrew/bin(或/usr/local/bin)加到 Sublime 的PATH环境变量中(可通过插件 Settings →env字段配置) - Windows WSL 用户:确保
editorconfig-core-py在 WSL 的 PATH 中,且 Sublime 运行在 WSL 模式下(非 Windows 原生版) - 验证方式:终端执行
editorconfig-core-py --version,有版本号才说明可用
.editorconfig 文件名、位置和 root = true 缺一不可
Sublime 只认严格命名为 .editorconfig(开头一个点、全小写、无后缀)的文件,并且只从你打开的项目根目录开始向上查找,遇到第一个含 root = true 的文件就停止。放错位置或写错名字,等于没配。
- 常见错误:文件存成
editorconfig、.editorconfig.txt、EDITORCONFIG或放在src/子目录下 -
root = true必须存在,且最好放在文件顶部几行;没有它,Sublime 会继续往上找(比如误加载父目录其他项目的配置) - 多根工作区(Multiple Folders)下,每个根目录都要有自己独立的
.editorconfig,Sublime 不跨根合并 - Windows 用户用记事本保存时默认生成 CRLF 换行,会导致插件跳过该文件——务必用 Sublime 或 VS Code 等编辑器保存,确保
.editorconfig本身是 LF 换行
Sublime 自身设置会覆盖 EditorConfig 行为
detect_indentation 是最常被忽略的干扰项。一旦开启,Sublime 会在打开文件时“记住”它历史上的缩进方式(比如旧文件用 Tab),后续编辑就优先沿用这个记忆,完全无视 .editorconfig 中的 indent_style。
- 必须在
Preferences.sublime-settings中显式设为:"detect_indentation": false - 同时清理掉硬编码的缩进相关设置,如
"translate_tabs_to_spaces"、"tab_size"、"detect_indentation"—— 让 EditorConfig 完全接管 - 语言专属插件(如
JS Custom、Vue Syntax Highlighter)可能自带infer_indent逻辑,需在对应插件的js_custom.sublime-settings中关掉该选项
EditorConfig 不重写已有内容,只控制新输入和重排版
这是团队最容易误解的一点:indent_size = 2 + indent_style = space 并不会把文件里已有的 4 个空格替换成 2 个,也不会把 Tab 批量转为空格。它只影响你按 Tab 键、粘贴、或执行 Reindent(Ctrl+Shift+P → “Reindent”)时的行为。
-
end_of_line = lf仅在保存时生效,且前提是当前文件编码支持转换(GBK 编码下设lf会被跳过) - 想批量修正历史文件?得用外部工具:
dos2unix、autopep8 --in-place --aggressive或prettier --write - CI 阶段建议加
editorconfig-checker,验证实际保存结果是否符合.editorconfig规则,而不是只检查配置文件是否存在
真正卡住团队的,往往不是 .editorconfig 语法写错,而是 editorconfig-core-py 路径不对、detect_indentation 没关、或者语言插件悄悄覆盖了设置——这些地方没有报错,只有行为异常,排查起来最耗时间。

















