正则替换是最可靠的大批量加引号方式,不依赖光标、不受空格缩进干扰、不因行长不一错位,几千行瞬时完成;关键在正确使用锚点^$和捕获组。

正则替换是唯一可靠的大批量加引号方式,多光标和列选择只适合结构极干净的 10–50 行场景。
为什么直接 Ctrl+H 正则替换最稳
它不依赖光标位置、不被空格/缩进干扰、不因行长短不一错位,几千行也瞬时完成。关键是要写对锚点和捕获组。
- 给每行非空内容加双引号(保留空行):Find
^(.+)$→ Replace"$1" - 想连空行也包裹(比如生成固定长度字符串数组):Find
^.*$→ Replace"$0"(注意用$0而不是$1,因为没用括号捕获) - 处理 JSON key(自动清理已有引号并统一格式):Find
("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*:→ Replace"$2": - 别漏掉
^和$:没有它们,.+可能跨行匹配;勾选.*按钮后,.才默认不匹配换行符
多光标(Ctrl+Shift+L)什么时候能用、怎么避免翻车
它快,但硬性前提太苛刻——稍有杂音就失效。
- 必须每行只有一段纯标识符,不能带注释、逗号、等号、空格或制表符
- 行尾若有空白,先执行
Ctrl+Shift+P→ 输入Trim Trailing White Space清理,否则"会插在空格后面,变成user_id" - 千万别鼠标拉选多行后直接按
"——Sublime 只会给第一行加引号,其余无反应 - 加完左引号后,按
End跳行尾再按"补右引号;Mac 用户可用Cmd+→替代End
列选择(Ctrl+Shift+↑/↓)为什么多数时候反而更危险
它看起来直观,实则对齐容错率为零。只要有一行比其他行短一位,引号就会插进单词中间。
- 例如三行分别是
user_id、name、email_address,第 2 行最短,列选择后输入",可能得到"u"ser_id、"name、"email_address - 只有所有行末严格对齐(如整齐的 ini 配置项)才可考虑,且需提前确认无隐藏空格
- 垂直多行选择(
Ctrl+Shift+↑/↓)本质仍是列选择,风险一致,不推荐用于加引号
选中后按 " 没反应?先查这三个地方
这不是功能坏了,而是触发条件没满足。
- 检查
Preferences → Settings – User是否有"auto_match_enabled": true——没这行等于关着,左侧默认设置无效 - 右下角语法名(如
JSON)点开 →Settings – Syntax Specific,确认没写"auto_match_enabled": false - 禁用
Emmet或Vintage插件测试:它们会劫持"键输入,导致原生补全根本没机会运行
真正容易被忽略的是:正则里的 $ 匹配的是“行尾位置”,不是换行符本身;所以加引号时它会插在换行符前,不会破坏换行结构——但如果你误用了 \n 替换,整体会被连成一行。











