sublime中将多行文本转为json数组的正确方法是:先用ctrl+shift+l启用多行编辑,home输"、end输",,再手动加[];或用正则替换(^(.+)$→"$1"、\n→,),并清理空行和尾部空格,最后用json.parse或jq验证合法性。

Ctrl+Shift+L 多行光标是基础,但加括号必须手动补前缀
Sublime 里把多行文本转成 ["a", "b", "c"] 这种数组,核心不是“一键生成”,而是靠 Ctrl+Shift+L 激活多行编辑后,**在每行开头和结尾分别插入引号和逗号**。很多人卡在最后一步:想在行尾统一加 ",结果顺手敲了 ) 或 ],导致括号错位匹配——因为 Sublime 的括号自动补全只认光标左侧字符," 在右,] 在右,它不会反向匹配前面的 [。
正确顺序是:Ctrl+Shift+L → Home → 输入 " → End → 输入 ",。最后再手动在首行前加 [、末行末尾加 ]。别依赖自动补全来闭合数组边界。
用正则替换避免 Ctrl+J 破坏结构
Ctrl+J 是危险操作,尤其对带缩进、注释或语法结构的文本。比如 Python 列表项 "item1" 和 "item2" 被 Ctrl+J 合并后变成 "item1" "item2",中间空格数量不可控,还可能吞掉换行后的逗号。
- 安全做法:打开
Ctrl+H,勾选.*(正则模式) - 查找:
^(.+)$(确保关闭. matches newline) - 替换为:
"$1" - 再查
\n,替换为:,(注意逗号后空格) - 最后手动加首尾
[和]
这比 Ctrl+J 多两步,但结果可控、可复现,不依赖当前光标位置或选区是否含空行。
空行和尾部空格不清理,生成的数组会多出空字符串
原始数据里夹着空行或某行末尾有空格,正则 ^(.+)$ 会跳过空行,但 ^\s*$ 才能真正捕获“伪空行”(仅含空格或 Tab)。如果漏掉这步,替换后可能出现 ["a", "", "b"] 这种带空字符串的数组,后续 JSON.parse 或 Python ast.literal_eval 可能失败。
清理建议:
- 先执行
Ctrl+H→ 查找^\s*$→ 替换为空(注意不带\n,否则会删掉有效换行) - 再用
Ctrl+Shift+P→ 输入Trailing Spaces: Remove清掉每行末尾空格 - 最后统一换行符:菜单
File → Line Endings → Unix (LF)
JSON 数组要严格,引号和逗号不能靠肉眼检查
生成 ["a","b","c"] 后,别直接复制进代码里跑。JSON 不接受末尾逗号、单引号、未转义双引号。最容易被忽略的是:原始行里本身含 "(比如 user"name"),正则 "$1" 会直接包进去,导致语法错误。
验证方式只有两个:
- 粘贴到浏览器控制台,输入
JSON.parse(`[...]`),看是否报错 - 或用 Sublime 安装
jqbuild system:保存为jq.sublime-build,内容为{"cmd": ["jq", "-n", "--argjson a '[...]'","$a"]},按Ctrl+B运行,jq 会明确提示哪一行哪个字符非法
真正的极速,不是按键最少,而是改一次就对;而“对”的标准,得由解析器说了算,不是眼睛。











