多光标加引号前必须先清理行尾空格并确保光标落于物理行首,否则引号易插错位置;处理JSON键名加引号应优先用正则匹配("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*:,替换为"$2":以精准保结构。

多光标加引号前,必须先清理行尾空格和缩进不一致
直接按 Cmd+Shift+L(macOS)或 Ctrl+Shift+L(Windows/Linux)拆光标后输 ",大概率失败——因为 Sublime 的 Home 键默认停在缩进后第一个字符前,不是真正行首;而行尾若有空格,End 或 Cmd+→ 会卡在空白处,导致右引号插错位置。
务必按顺序操作:
- 先选中目标行(鼠标拖选 /
Ctrl+L连续选 /Ctrl+Shift+↓扩展) - 执行
Ctrl+Shift+P→ 输入Trim Trailing White Space清掉所有行尾空格和 Tab - 再按
Ctrl+Shift+L(或Cmd+Shift+L),然后统一按←(左箭头)两次,或用Ctrl+Home(Win)/Cmd+Home(macOS)跳到物理行首 - 此时输入
",左引号才能紧贴内容开头
只给键(冒号前的标识符)加引号,别碰值和冒号
JSON 键名加引号不是简单每行包一层,而是精准匹配 key: 结构。用多光标手动处理时,只要某行含注释、等号、空格或缩进不齐,光标就容易插进中间,比如把 user_id // pk 变成 "user_id // pk,破坏语义。
更稳的做法是:先用正则筛选出合法键名,再用多光标补右引号
- 查找所有冒号前的纯标识符:
Ctrl+F输入([a-zA-Z_][a-zA-Z0-9_]*)\s*:,勾选Regular Expression - 按
Alt+Enter(Win/Linux)或Cmd+Enter(macOS)全选所有匹配项 - 按
Ctrl+Shift+L拆光标,再统一按"加左引号 - 按
End(Win)或Cmd+→(macOS)跳到冒号前位置,再输"
为什么正则替换比多光标更适合处理键名加引号
多光标对结构太敏感,而真实键值对常混着 'name':、"email":、id: 甚至 123abc:。正则能跳过非法格式,只动该动的。
推荐这个查找+替换组合(启用 .* 正则模式):
-
Find What:("?)([a-zA-Z_][a-zA-Z0-9_]*)("?)\s*: -
Replace With:"$2":
说明:$1 和 $3 是可选的原有引号,直接丢弃;$2 是干净的标识符;\s*: 确保只匹配冒号前空白,不会卷入值部分。写成 ^["'] 或漏掉 ? 就会匹配失败或删掉内容。
加完引号后,检查是否破坏了语法结构
最容易被忽略的是引号嵌套和转义问题。比如原值是 value: "hello \"world\"",你给 value 加引号变成 "value": "hello \"world\"" 是合法的;但若误操作成 "value": "hello "world"",JSON 就直接报错。
复杂场景下建议:
- 加引号后立刻用
Ctrl+Shift+P→Set Syntax: JSON,看是否有高亮异常 - 如果文件里混有单引号键(如
'status':),先全局替换'([a-zA-Z_][a-zA-Z0-9_]*)':→"$1":,再统一处理双引号键 - 最后一行没换行符时,
$正则可能失效,提前执行Ctrl+Shift+P→Set Line Endings: Unix统一换行格式

















