必须同时设置"tab_size":2、"translate_tabs_to_spaces":true并关闭"detect_indentation":false,且需通过语法专属设置(如.js文件的settings–syntaxspecific)和项目级.sublime-project配置实现隔离,否则会被自动检测覆盖。

直接改 Preferences → Settings 用户配置里的 "tab_size" 和 "translate_tabs_to_spaces" 就能生效,但必须关掉 detect_indentation,否则一打开文件就被覆盖。
为什么改了设置还是缩进为 4?
根本不是配置写错了,而是 Sublime 默认开启 detect_indentation —— 它会在打开文件时扫描前 200 行,只要发现任意 \t 或历史缩进不一致,就立刻强制切回原缩进风格,完全无视你写的 "tab_size": 2。
- 右下角状态栏显示 “Tab Width: 4” 却按 Tab 插入的是制表符?说明
detect_indentation已接管控制权 - 只改全局
Preferences → Settings不够:语法专属设置(如JavaScript.sublime-settings)优先级更高 - 已打开的文件不会自动重载新配置,需手动执行一次
Convert Indentation to Spaces或重启文件
前端项目(Vue/JS/ESLint 配置为 2)该在哪配?
别只靠全局设置。前端代码(.js、.vue、.jsx)要真正统一为 2 空格,必须走语法专属路径:
前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。
- 打开一个
.js文件 →Preferences → Settings – Syntax Specific - 在右侧 JSON 中添加:
{"tab_size": 2,"translate_tabs_to_spaces": true,"detect_indentation": false} - 同理,对
Vue Component、CSS、HTML分别进入对应语法的Settings – Syntax Specific配置 - 这样既能隔离 Python/JSON 等用 4 空格的场景,又避免被项目级
.editorconfig覆盖(如果装了 EditorConfig 插件)
粘贴代码后缩进错乱、保存时报 IndentationError 怎么办?
这是空格和 \t 混用的典型症状,尤其从 VS Code、网页或旧项目复制来的代码常带不可见制表符。Sublime 默认不高亮这种混合,但 Python/YAML 解析器会直接报错。
- 先统一格式:全选(
Ctrl+A)→ 右键 →Indentation → Convert Indentation to Spaces - 再手动校准:右下角点击缩进标识(如 “Tab Width: 4”)→
Indentation → Change Indentation → Indent: 2 - 预防性加两行到语法专属设置:
"trim_automatic_white_space": true(保存时删行尾空格),"draw_white_space": "all"(实时显示所有空格和\t)
不同项目要不同缩进(比如 Vue 用 2、Django 用 4),怎么隔离?
靠全局或语法设置做不到真隔离——.sublime-project 是唯一可靠方案,它优先级高于用户设置和语法设置。
- 菜单栏
Project → Save Project As…,保存为my-vue-project.sublime-project - 用文本编辑器打开该文件,在
"settings"下添加:"tab_size": 2,"translate_tabs_to_spaces": true,"detect_indentation": false
- 下次用该项目打开时,所有文件(包括未识别语法的配置文件)都会强制应用此缩进
真正容易被忽略的是:哪怕你配全了所有设置,只要文件里存在一行 \t + 空格混用,detect_indentation 就可能重新激活;所以首次配置后,务必对整个项目执行一次批量转换。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










