问题出在Sublime的detect_indentation设置抢控缩进权,需关闭该选项并确保.editorconfig文件位置正确、命名规范,且依赖命令editorconfig-core-py可用。

EditorConfig插件装了但缩进没变,问题出在哪
不是插件没生效,而是 Sublime 自身的 detect_indentation 设置在抢控制权。它会优先记住你打开文件时的缩进历史(比如旧文件用 2 空格),然后无视 .editorconfig 的 indent_style 和 indent_size。
必须手动关掉这个干扰项:
- 打开
Preferences → Settings - 在右侧用户设置里加一行:
"detect_indentation": false - 同时删掉或注释掉
"translate_tabs_to_spaces"和"tab_size"这类硬编码值,让 EditorConfig 完全接管
.editorconfig 文件放错位置导致静默失效
EditorConfig 插件只从当前打开的项目根目录向上查找第一个 .editorconfig,遇到 root = true 就停。放错位置等于没配。
常见错误和对应做法:
- 文件名写成
editorconfig、.editorconfig.txt或editorconfig.ini→ 必须是纯.editorconfig(点开头、全小写、无后缀) - 放在
src/或frontend/子目录下 → 必须放到你通过Project → Open Folder打开的那个顶层文件夹里 - 多根工作区中某个子项目没配 → 每个根目录都要单独放一份
.editorconfig,不能共用 - 父目录有
root = true的配置 → 当前项目会被跳过,检查上层目录是否误放了配置文件
保存时换行符不生效,其实是依赖链断了
end_of_line = lf 或 crlf 不生效,90% 是因为插件背后调用的 editorconfig-core-py 命令不可用,而非配置写错。
验证和修复步骤:
- 终端执行
editorconfig-core-py --version,有输出才说明已安装且可用 - macOS M1/M2 用户:Homebrew 安装后,运行
which editorconfig-core-py,若为空,需把/opt/homebrew/bin加到 Sublime 的环境变量里(插件 Settings →env字段) - Windows WSL 用户:确保 Sublime 运行在 WSL 模式,且
editorconfig-core-py在 WSL 的$PATH中 - Sublime 控制台(
Ctrl+`)里看到no config found并不等于配置缺失——很可能是依赖命令找不到,日志不会明说
为什么改了 .editorconfig 后新输入还是不对
EditorConfig 只影响新输入、粘贴、重排版(如 Ctrl+Shift+P → Reindent),它不会自动批量修改已有代码的缩进或换行符。
这意味着:
-
indent_style = space但没写indent_size = 4→ 某些语言插件(如旧版 JS-Beautify)可能 fallback 到默认值甚至忽略 -
end_of_line = lf只在保存时生效,且要求文件当前编码支持该换行符(GBK 编码下设lf可能失败) - JS Custom、Vue Syntax Highlight 等语言插件如果启用了
infer_indent,会覆盖 EditorConfig → 查对应插件的.sublime-settings并设为false - Python 项目记得在
.editorconfig里排除缓存目录:[**/__pycache__/**]和[**/*.pyc],否则插件可能尝试处理二进制文件并报错
真正起效的节点就两个:打开文件时读取规则,保存时应用规则。中间所有编辑行为都依赖 Sublime 和语言插件是否尊重这些设置——这点最容易被当成“插件坏了”。


















