最稳的批量加引号方式是正则替换^(.+)$→"$1",可跳过空行、无视缩进、适配json/csv等结构化场景;需启用正则模式,空行用^.$→"$0";处理json key需用\b(a-za-z_)\b→"$1";清理旧格式用("?)(([a-za-z_][a-za-z0-9_]*))("?)\s*:→"$2":;行尾加引号+逗号须先删空白再$→",;正则依赖文本结构一致性,混乱时需人工校验。

最稳的批量加引号方式就是正则替换,不是多光标,也不是列选——尤其当文本超过20行、含缩进或空行时,其他方法大概率出错。
为什么^(.+)$→"$1"是默认首选
这个组合能自动跳过空行、不依赖光标位置、无视缩进差异,适用于 JSON 数组元素、CSV 字段、配置项列表等结构化场景。
-
^和$必须成对出现,且右下角要勾选.*(正则模式),否则^被当字面量,整个替换静默失败 -
.+不匹配空字符串,所以空行天然被跳过;若需包裹空行,改用^.*$→"$0",但得确认业务是否真需要"" - 原始文本含
\r\n混合换行符?先执行Ctrl+Shift+P→Set Line Endings: Unix,避免部分行漏匹配 - 别写成
^".+"$——这会把原内容删掉,只剩引号
只给纯标识符加引号,跳过已有引号/数字开头/含空格的行
比如处理 JSON key 列表:id、user_name、123abc、"email"、first name,你只想包前两个。
- 查找:
\b([a-zA-Z_][a-zA-Z0-9_]*)\b→ 仅捕获合法 JS/JSON 标识符 - 替换:
"$1" - 注意:
\b是单词边界,能排除123abc(开头非字母/下划线)和first name(含空格) - 已有引号的行(如
"email")不会被二次包裹,因为"不属于\b范围
给 JSON key 清理旧格式并统一加双引号
常见混乱写法:id:、"name":、'email':、user_id :,目标输出:"id":、"name":、"email":、"user_id":。
- 查找:
("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*: - 替换:
"$2": -
$1和$3捕获可选的原有引号,替换时直接丢弃;\s*:确保匹配冒号前任意空白,但不卷入值部分 - 若某行是
123id:或foo bar:,该正则自动跳过,不会误改
行尾加引号+逗号的两个实操要点
Sublime 没有“批量行尾插入”命令,靠普通编辑极易漏行或错位。必须分步控制。
- 先清理尾部空白:
\s*$→空,否则$匹配位置在空格后,"会插在空格右边,变成item " - 再执行
$→",,注意$匹配的是“行尾位置”,不是换行符本身,所以不会破坏换行结构 - 若文件最后一行没有换行符,
$仍能匹配它,,会被插在文件末尾——务必提前确认结尾状态 - 别指望正则自动识别“最后一行”来省略末尾逗号;稳妥做法是后续用
,\s*(?=})清理,或人工删
真正容易被忽略的点:正则不是万能开关,它依赖输入文本的结构一致性。如果一行里混着注释、多字段、制表符或不规则缩进,再熟练的正则也救不了——这时该切回手动校验,而不是硬套模式。











