Sublime不支持正则直接对齐,唯一可靠方式是Alignment插件;需重启、选中连续多行、配置字符与作用域,且依赖语法高亮模式。

Sublime 本身不支持用正则直接对齐代码,所谓“正则对齐”是误传;真正可靠、可复现的对齐方式只有 Alignment 插件,且必须配合正确的字符配置和作用域限定。
Alignment 插件安装与基础对齐为什么总失效
很多人装完 Alignment 就按 Ctrl+Alt+A,结果没反应或对得乱七八糟——根本原因不是快捷键错了,而是插件默认只认 = 和 :,但没打开「作用域识别」或选中了错误范围。
- 安装后必须重启 Sublime(部分旧版本需重启,v4.4+ 可跳过)
- 对齐前务必选中**连续多行**,不能只选中某几列或跨空行
- 默认不处理注释行或空行,若想对齐带
//的赋值语句,需在用户设置里加"alignment_chars": [{"char": "=", "align_mode": "right"}] - macOS 用户若用
Cmd+Ctrl+A没反应,检查是否被系统快捷键拦截(如截图工具),可改绑定为Cmd+Shift+A
对齐等号时为何右边缩进不一致
Alignment 默认把 = 当作分隔符,但不会自动补空格;它只是把每行的 = 垂直排齐,左边内容靠右对齐,右边内容靠左对齐。所以 a = 1 和 long_var_name = 2 对齐后,右边的 1 和 2 并不垂直。
- 想让右边也对齐,得先用正则批量补空格:查找
(\w+)\s*=\s*(\S+),替换为$1 = $2(确保等号前后各一个空格) - 再执行 Alignment,效果才干净
- 若项目强制要求右对齐数值(如
max = 100),Alignment 不支持,得用宏或 Python 插件实现
用正则“模拟对齐”有哪些硬伤
有人尝试用 Find → Replace 配合 (\w+)\s*=\s*(\S+) + $1 = $2 来“手动对齐”,这看似可行,实则埋雷。
- 无法处理嵌套结构:如
obj.attr = { a: 1, b: 2 }会被截断 - 会破坏字符串里的等号:
url = "https://a=b.com"中的=也被替换 - 不识别语法作用域:在注释、函数参数列表、JSON 字面量里照样匹配
- 无法动态计算最大宽度,每次都要人工调正则——不如 Alignment 点一下
Alignment 高级配置避坑点
想让它对齐 :(比如 TypeScript 接口定义),光加字符不够,还得关掉默认的 = 规则,否则两套逻辑打架。
- 用户设置里写全配置,别只补半截:
{ "alignment_chars": [ {"char": ":", "align_mode": "middle"}, {"char": "=", "align_mode": "right"} ], "alignment_space_chars": [" ", "\t"] } -
align_mode选middle是居中对齐符号(适合:),right是右对齐符号(适合=) - 若对齐后缩进错乱,检查是否启用了
detect_indentation或trim_automatic_white_space,这两个和 Alignment 冲突
最常被忽略的是:Alignment 对齐结果依赖当前语法高亮模式。如果文件是 Plain Text,它连 = 都不识别;切到 JavaScript 或 Python 才生效。别在未设语法的空白文件里试对齐。

















