Convert Indentation to Tabs后等号不对齐,根本原因是Tab渲染列宽(如4列)与AlignTab按字符位置计算的对齐逻辑冲突;必须先统一转为空格、设好tab_size和translate_tabs_to_spaces、禁用detect_indentation,再对齐,否则视觉错位不可避免。

为什么“Convert Indentation to Tabs”后等号还是不对齐
不是缩进没生效,是 Sublime 的 Tab 宽度和 AlignTab 对齐逻辑不匹配。Tab 在显示时被渲染为 4 列(或 8 列),但 AlignTab 默认按字符位置计算对齐点——它看到的是「空格数」,不是「视觉列宽」。如果你用 tab_size 设为 2,但文件里混着原始 Tab 和空格,AlignTab 就会把一个 Tab 当作 2 个字符去算,而编辑器渲染时当 4 列,结果就是看着歪。
必须先统一:打开 View → Indentation → Convert Indentation to Spaces,再设 "translate_tabs_to_spaces": true 和 "tab_size": 4(或团队约定值),最后才做对齐。否则哪怕你手动敲 Tab,AlignTab 也大概率跳过某几行。
- 检查当前缩进风格:右下角状态栏看是
Tabs还是Spaces,点它可切换 - 确认
Preferences → Settings – User里有"detect_indentation": false,避免自动切回 Tab - 对齐前执行一次
Ctrl+Shift+P → Trim Trailing White Space,空格干扰会导致某行被静默跳过
用 Tab 实现真·等宽对齐的唯一可靠路径
想让等号严格落在同一视觉列,且用 Tab 而非空格填充,就得绕开 AlignTab —— 它只补空格,不插 Tab。真正能控制 Tab 插入位置的是 Sublime 原生的 align_tabs 命令,但它只对制表符有效,且要求每行缩进本身是纯 Tab。
操作链是:先确保所有行缩进都是 Tab(Convert Indentation to Tabs),再手动在等号前插入足够多的 Tab,最后用 View → Indentation → Indent Using Tabs 锁死模式。但注意:align_tabs 不识别 =,它只对齐现有 Tab 制表位,所以你得先用列选择(Alt+Shift+拖动)在等号列拉出竖条,然后敲 Tab —— 这样每个 Tab 都落在同一列,视觉上就齐了。
- 列选择时务必用等宽字体(如
Fira Code),非等宽字体下Alt+Shift+拖动看着齐,松手就错位 - 敲 Tab 前确认状态栏显示
Tabs,否则敲出来的是空格 - 一行里多个
=(比如字符串"a=b")会被忽略,align_tabs只处理行首缩进部分
AlignTab 配合 Tab 缩进时的致命陷阱
很多人开了 "allow_auto_align": true 又用 Tab 缩进,保存瞬间代码全乱——因为 AlignTab 在“补空格对齐等号”的同时,没动缩进部分,结果缩进是 Tab,等号前却是空格,Git diff 里整行标红。这不是 bug,是设计如此:AlignTab 只负责“对齐锚点左侧的空白”,不管那空白是 Tab 还是空格。
所以如果项目强制用 Tab 缩进,就别让 AlignTab 碰等号前区域。正确做法是:选中代码 → Convert Indentation to Spaces → AlignTab 对齐 → 再 Convert Indentation to Tabs。虽然多两步,但 Git 干净、视觉对齐、缩进合规三者才能共存。
-
Convert Indentation to Tabs后,等号列可能偏移——因为 Tab 宽度 ≠ 原空格数,需重新列选择微调 - 不要依赖
on_save自动触发对齐,尤其在团队协作中,别人未必装了 AlignTab - 快捷键
Ctrl+Alt+A被 SideBarEnhancements 或 Emmet 占用时,去Preferences → Key Bindings搜align_tab手动重绑
非等号场景下 Tab 对齐的实际限制
Tab 本质是「制表位对齐」,不是「符号对齐」。它只能保证你在第 4、8、12…列停住,不能保证停在某个 = 上。所以对 key: value 或 func(a, b, c) 这类冒号/逗号对齐,Tab 方案基本失效——你得靠 Alignment 插件配 "alignment_chars": [":", ","],或者老实用 AlignTab 补空格。
真正适合 Tab 对齐的,只有两类:纯缩进结构(if/for 块)、或人工控制制表位的配置文件(如 .env 或 Makefile)。其他情况,别硬套 Tab,补空格更可控。
对齐这件事,没有银弹。Tab 看着干净,但跨编辑器易变形;空格看着啰嗦,但 Git 友好、行为确定。选哪个,取决于你此刻要交付的是可执行代码,还是给人看的配置文档。

















