Alignment插件是Sublime Text中对齐等号的唯一可靠方案,正则替换无法实现真正视觉对齐,因其不处理字符宽度、Tab/空格混合缩进及多级嵌套上下文。

Sublime Text 本身不支持基于等号的自动对齐,必须靠 Alignment 插件实现——仅用正则替换无法真正“对齐”,它只能补空格或删缩进,但会破坏语法结构、错乱列位置,甚至让后续格式化工具失效。
Alignment 插件才是对齐等号的唯一可靠方案
正则做不到视觉对齐(即让所有 = 符号垂直落在同一列),因为它不计算字符宽度、不感知 Tab/空格混合缩进、也不处理多级嵌套中的对齐上下文。你看到的“对齐效果”往往是巧合,稍一编辑就崩。
- 插件会扫描选中行,识别
=、:等分隔符,再按列插入空格或 Tab 对齐,结果可逆、可复用 - 安装后无需重启:按
Ctrl+Shift+P→ 输入Install Package→ 搜Alignment→ 回车 - 默认快捷键:
Ctrl+Alt+A(Windows/Linux)或Cmd+Ctrl+A(Mac),仅对已选中行生效 - 若快捷键冲突,可在
Preferences → Package Settings → Alignment → Settings中修改alignment_chars
为什么用正则“模拟对齐”大概率翻车
有人试过用 ^(\w+)\s*=\s*(.+)$ 替换为 $1 = $2,以为能统一空格——这只会抹平原有缩进层级,且完全不管 if a == b and c = d: 这类含多个 = 的行。
-
^和$在混合换行符(\r\nvs\n)下行为不一致,导致部分行漏匹配 - 正则无法区分赋值
=和比较==、默认参数def f(x=1)中的=,强行替换会改坏语法 - Tab 与空格混用时,
\s+会把 Tab 当作 1 个字符处理,但实际显示宽度可能是 4 或 8 列,对齐位置必然偏移 - 一旦用了
.*模式又没关. matches newline,^可能匹配到行首前的换行符,结果整段位移
Alignment 配置里必须改的两项
开箱即用的 Alignment 默认只认 = 和 :,但很多场景需要扩展,比如对齐字典键后的冒号、或类型注解中的 ->。
- 打开
Preferences → Package Settings → Alignment → Settings - 在 JSON 中添加自定义符号,例如:
{ "alignment_chars": [ {"char": "=", "align_mode": "right"}, {"char": ":", "align_mode": "left"}, {"char": "->", "align_mode": "right"} ] } -
align_mode填left表示以符号左边缘对齐(如key: value),填right表示右边缘对齐(如a = 1) - 改完保存,不用重启,下次按快捷键立即生效
真正麻烦的不是装插件,而是很多人删了行首空格、转了空格缩进、还手动调过 Tab width,却忘了关掉 View → Indentation → Detect Indentation——这个开关一开,Sublime 就会偷偷把你的空格缩进重判成 Tab,Alignment 计算列数时直接错乱。对齐出问题,先看这一项。

















