正则删行首空格必须用^\s+锚定,禁用detect_indentation并设translate_tabs_to_spaces为true,多文件缩进转换用convert indentation命令,对齐前须统一缩进类型。

正则替换删行首空格必须用 ^\s+,不是 \s+
直接搜 \s+ 替换会把行中、字符串内、注释后的所有空白都干掉,代码逻辑可能被破坏。真正安全的写法是加 ^ 锚定行首,确保只动缩进部分。
常见误操作包括:没开正则模式(.* 按钮未点亮)、全选后替换导致注释和空行也被扫荡、用 \s* 导致空行爆炸式增加。
-
^\s+匹配行首一个及以上空白字符(含 Tab 和空格),最稳 - 替换框必须留空,别填空格或制表符
- 想局部处理?先选中目标代码块再按
Ctrl+H,替换只作用于选区
批量转 Tab 为空格不能只靠 \t 替换
用 \t 查找 + 手动填 4 个空格去替换,看似直观,但会漏掉混合缩进场景(比如 \t 这种 Tab 加空格组合),而且无法处理不同 tab_size 下的换算逻辑。
Sublime 内置的 Convert Indentation to Spaces 命令才是可靠方案——它严格按当前视图的 tab_size 值计算,每个 \t 都等价转换为对应数量空格,且只处理行首缩进,不碰字符串或行中内容。
- 快捷键:
Ctrl+Shift+P→ 输入Convert Indentation to Spaces回车 - 菜单路径:
View → Indentation → Convert Indentation to Spaces - 多文件处理:在侧边栏按住
Ctrl多选文件标签页,对任一标签执行该命令,全部同步转换
detect_indentation 是静默覆盖你设置的元凶
即使你在用户设置里写了 "translate_tabs_to_spaces": true,打开一个老项目时右下角仍显示 Tabs: 4,大概率是 detect_indentation 在作祟。它默认开启,会扫描文件前 200 行,只要发现任意 \t 就强制切回 Tab 模式,完全无视你的配置。
这不是 bug,是设计行为。所以必须显式关掉它,否则每次打开旧文件都要手动点右下角切换。
- 在用户设置中加这一行:
"detect_indentation": false - 同时确认
"translate_tabs_to_spaces": true是布尔值,不是字符串(别加引号) - 如果项目有
.editorconfig文件且含indent_style = tab,EditorConfig 插件优先级更高,得先改它
对齐类操作前必须先统一缩进类型
Alignment 或 AlignTab 这类插件对齐失败,90% 的原因是混用了 Tab 和空格。它们按字符数计算列位置,而 Tab 在视觉上占 4 列、实际只算 1 个字符,会导致对齐锚点偏移。
别指望对齐工具帮你“修缩进”,它的职责只是加空格。缩进统一这事,得在对齐前一步做完。
- 先执行
Convert Indentation to Spaces(或to Tabs)确保全文件缩进一致 - 再开
View → Render Whitespace → All确认无→(Tab)和·(空格)混杂 - 最后才运行 Alignment,否则对齐结果肉眼可见地歪斜
Spaces: 4 才算真正生效,Tab Width: 4 只是视觉宽度,不代表输入行为已改变。这个细节很多人调了半小时设置却卡在最后一步。











