最稳路径是用^(.+)$正则替换生成json数组元素,它自动跳过空行、不依赖光标位置、不挑缩进;多光标仅适用于≤50行且无注释/空格/逗号的干净文本。

最稳路径不是“一键”,而是用 ^(.+)$ 正则替换生成 JSON 数组元素——它自动跳过空行、不依赖光标位置、不挑缩进,几千行瞬时完成;多光标只适合 ≤50 行且无注释/空格/逗号的干净文本。
为什么 ^(.+)$ → "$1" 是首选方案
这不是玄学,是 Sublime 正则引擎对锚点和捕获组的精确响应:
-
^和$必须配对出现,否则.+可能跨行匹配(尤其关闭Wrap around时更危险) -
.+不匹配空字符串,所以空行天然被跳过;若真要包裹空行,得改用^.*$→"$0",但需手动或后续清理末尾逗号 - 原始文本含
\r\n混合换行符?先执行Ctrl+Shift+P→Set Line Endings: Unix,避免部分行漏匹配 - 替换后最后一行多一个逗号?别指望正则识别“最后一行”,稳妥做法是后续用
,\s*(?=})清理,或人工删
Ctrl+Shift+L 多光标加引号翻车的三个硬前提
这个操作快,但只要违反任一条件,结果就错位、漏加、引号插进空格里:
- 每行只能有一段纯标识符:不能有注释(如
user_id // primary key)、不能含逗号/等号/空格/制表符 - 行尾必须无空白:先执行
Ctrl+Shift+P→Trim Trailing White Space,否则"会插在空格后变成item " - 光标必须真正在行首:按一次
Home停在缩进起点,再按一次才到第 0 列;Windows 用户可用Ctrl+Home,macOS 用Cmd+Home;←键比Home更可靠
给 JSON key 统一加引号并清理旧格式
这不是简单包裹,而是修复已有不规范写法(如 id:、"name":、'email':),输出标准的 "id"::
- 查找:
("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*:——$2是纯标识符捕获组,$1和$3是可选的原有引号,替换时直接丢弃 -
\s*:确保匹配冒号前任意空白,但别漏掉结尾的:,否则会把整个值也卷进来 - 别写成
:\s*,顺序反了会导致匹配失败;也别写成^["'],那是匹配并删除,不是跳过 - 如果某行是
123abc:或foo bar:,这个正则会跳过,因为它只捕获合法标识符
行尾加逗号的两个实操路径
Sublime 没有内置“批量行尾插入”命令,靠普通编辑容易漏行或错位:
- 多光标 +
End法:先Ctrl+L逐行选中,再统一按End(Win/Linux)或Cmd+→(macOS),确保光标落在换行符前,再输入,;若行尾有空格,End可能停在空白处,此时连按两次→或改用End - 正则替换法:启用
.*模式,查找$,替换为,;但注意$匹配的是“行尾位置”,不是换行符本身,所以不会破坏换行结构;若文件最后一行没换行符,$仍能匹配它,,会被插在文件末尾而非“行尾”,务必提前确认文件结尾状态
真正容易被忽略的是:缩进层级差异会让 Home 在不同行停的位置不同,这不是 UI 假象,是 Sublime 对“行首”的严格定义;而 ^ 在正则里默认行为和直觉不同——不点开右下角 .* 按钮,它就被当字面量处理,替换完全没反应。











