最稳路径是正则替换^(.+)$→"$1"生成json数组元素,它自动跳过空行、不依赖光标、不挑缩进;若需包含空行则改用^.$→"$0",但需手动或用,\s(?=})清理末尾逗号。

正则替换:^(.+)$ → "$1", 是最稳路径
直接用这个组合就能批量生成 JSON 数组元素,不依赖光标、不挑缩进、不惧空行干扰。关键不是“一键”,而是写对锚点和捕获组。
-
^和$必须配对出现,否则.+可能跨行匹配(尤其当关闭了Wrap around时更危险) -
^(.+)$自动跳过空行,因为.+不匹配空字符串;如果想连空行也包成"",得改用^.*$→"$0", - 替换后最后一行会多一个逗号,JSON 语法不允许——别指望正则自动识别“最后一行”,手动删或后续用
,\s*(?=})清理更可靠 - 如果原始文本含制表符或混合换行符(
\r\n和\n),先执行Ctrl+Shift+P→Set Line Endings: Unix,避免部分行漏匹配
多光标加引号+逗号:只适合≤50 行且无干扰字符
按 Ctrl+Shift+L(Win/Linux)或 Cmd+Shift+L(macOS)拆光标后,必须分两步操作:先加左引号,再统一加右引号+逗号。任何一步错位,结果就错。
- 加左引号前,务必确认每行光标真正在行首:缩进行按一次
Home不够,得按两次或直接用Ctrl+Home/Cmd+Home - 行尾有空格?先
Ctrl+Shift+P→Trim Trailing White Space,否则"会插在空格后面,变成item " - 加完左引号后,按
End(Win)或Cmd+→(macOS)跳到行尾,再输",—— 别用连按→,容易停在空格上 - 若某行含注释(如
user_id // primary key)或多字段(如name, age),多光标立刻失效,必须切回正则
Ctrl+A 后直接按 " 为什么只改第一行?
因为 Ctrl+A 是块选中(block selection),不是多光标。Sublime 只允许一个主光标响应输入,其余高亮只是视觉反馈,实际不参与编辑。
- 错误现象:
item1item2item3全选后按",结果只有"item1,其余不变 - 正确做法:先鼠标拖选或
Ctrl+L连续选中目标行,再按Ctrl+Shift+L拆出独立光标 - Vintage 模式下
Ctrl+Shift+L被重映射为「选中到行尾」,此时要么关掉 Vintage,要么放弃多光标改用正则
JSON key 处理:用 ("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*: 清理并统一格式
这不是单纯加引号,而是修复已有不规范写法(如 id:、"name":、'email':),输出标准的 "id":。
-
$2是纯标识符捕获组,$1和$3是可选的原有引号,替换时直接丢弃 - 冒号后可能有空格或制表符,
\s*:确保匹配所有常见格式 - 别漏掉结尾的
:,否则会把整个值也卷进来;也别写成:\s*,顺序反了会导致匹配失败 - 如果 key 含数字开头(如
1st_name)或短横线(如first-name),这个正则不适用,得换(["']?)([^"':\s]+)(["']?)\s*:并手动校验
真正容易被忽略的是:正则里的 $ 匹配的是“行尾位置”,不是换行符本身,所以加完引号不会吞掉换行;但如果你在替换里误用了 \n,整体会被连成一行——而这个错误在大文件里极难一眼发现。











