auto_indent会破坏自由格式文本排版,应按语法scope(如text.plain)在Syntax Specific设置中禁用;确认scope需用Developer: Show Scope Name命令;冲突scope需检查插件优先级。

为什么 auto_indent 会影响自由格式文本
Sublime Text 默认对多数文件类型启用 auto_indent,它会在回车后自动复用上一行的缩进。这对代码很友好,但对纯文本、日志、笔记、配置片段等「自由格式」内容反而破坏排版——比如你手动对齐的字段、ASCII 表格、YAML 注释块,一换行就错位。
禁用特定文件类型的自动缩进(以 Plain Text 为例)
关键不是关全局,而是按语法作用域精准关闭。Sublime 使用 scope 区分文件类型,Plain Text 对应 text.plain;其他如 Log 是 text.log,Markdown 是 text.html.markdown。
- 打开菜单:
Preferences → Settings – Syntax Specific - 确保右下角状态栏显示当前是目标语法(如
Plain Text),否则该文件不会加载对应设置 - 在右侧用户设置面板中添加:
{ "auto_indent": false } - 保存后立即生效,无需重启
如何确认当前文件的语法 scope
误配 scope 是最常见失败原因。比如你以为在编辑日志,实际语法被识别为 Shell-Unix-Generic,关了 text.plain 毫无作用。
- 快捷键
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS) - 输入并执行:
Developer: Show Scope Name - 光标所在位置会弹出完整 scope 字符串,例如:
source.shell text.log - 取最末一个词(如
text.log)作为语法标识,用于创建对应的Settings – Syntax Specific
保留缩进辅助但禁用自动复用(折中方案)
完全关 auto_indent 后,Tab 键仍可用,但回车不再继承缩进。若你还想保留「按 Tab 补全缩进」或「Indentation: Reindent Lines」等功能,只禁自动继承,可改用:
{
"auto_indent": false,
"detect_indentation": false,
"tab_size": 4,
"translate_tabs_to_spaces": true
}
其中 detect_indentation 关闭后,Sublime 不再根据文件首行猜缩进风格,避免意外覆盖你的手动设置。
真正要小心的是:多个语法插件可能注册相同 scope(比如两个 Markdown 插件都声明 text.html.markdown),此时需检查 Package Control 中启用的是哪一个,并优先编辑其关联的语法设置文件。scope 冲突不报错,但设置不生效——这是最常被忽略的点。










