多光标加引号前必须将光标移至行首而非缩进起点,否则会因空格导致引号位置错误;应使用ctrl+home(win)/cmd+home(macos)或双击←键,并避免ctrl+a块选引发的光标错位。

多光标加引号前必须把光标移到真正行首
Sublime 的 Home 键默认停在“缩进后第一个字符前”,不是文件第 0 列。比如一行是 user_id(4 个空格),按一次 Home 光标落在 u 前,再按一次才到最左;否则输 " 会变成" user_id 或 " user_id,破坏格式甚至语法。
更稳的做法是:
- Windows:按 Ctrl+Home
- macOS:按 Cmd+Home
- 通用:连按两次 ←(左箭头)
操作顺序不能错:
- 先用鼠标拖选 / Ctrl+L / Ctrl+Shift+↓ 选中目标行
- 再按 Ctrl+Shift+L(Win/Linux)或 Cmd+Shift+L(macOS)拆出多光标
- 立刻执行上述任一方式移光标到行首
- 输入 " 或 '
为什么 Ctrl+A 后按 Ctrl+Shift+L 会失败
因为 Ctrl+A 是块选中(block selection),不是行选中。此时按 Ctrl+Shift+L,所有光标会落在每行**末尾**,而不是开头。接着按 Home 只移动第一行光标,其余不动——结果只有第一行加了引号,其余全漏掉。
常见翻车现象:
- 原文本:nameagecity
- 错误操作后:"nameagecity(只第一行生效)
正确做法:
- 放弃 Ctrl+A,改用 Ctrl+L 逐行选中(或鼠标拖选)
- 若已误触发,按 Esc 取消全部光标,重来
- Vintage 模式下 Ctrl+Shift+L 被重映射为「选中到行尾」,此时直接禁用 Vintage 或改用正则
行尾加右引号和逗号时,空格是最大陷阱
如果某行末尾有空格或 Tab,按 End(Win/Linux)或 Cmd+→(macOS)后,光标会停在空白处,再输 ", 就变成 item ",,而非 "item",。这种错误 JSON、JS、SQL 全部报错,但肉眼极难发现。
必须前置清理:
- 执行 Ctrl+Shift+P → 输入 Trim Trailing White Space,回车
- 再按 End / Cmd+→,输入 ",
若需统一补 ",,推荐分两步:
- 先加左引号(确保光标在行首)
- 再统一加右引号 + 逗号:按 End → 输 ",
- 不要用连按 →,容易卡在空格上
多光标不适用的三类典型场景
它快,但只对干净数据有效。一旦出现以下任一情况,结果必然错位或漏加:
- 行内含注释:如 user_id // primary key,多光标会把引号插进注释里
- 行末有空格/Tab:即使只有一行带空格,整批输出都会错位
- 行内容不单一:如 name, age 或 "email":,无法区分字段边界
遇到这些,立刻切正则:
- 打开 Ctrl+H,勾选 .*(正则模式)
- 查找:^(.+)$,替换:"$1"(非空行自动跳过)
- 若要处理 SQL 字符串值,别用多光标,改用 ^([a-zA-Z_][a-zA-Z0-9_\s\-]{2,})$ 配合人工核验
真正容易被忽略的是:多光标操作本身不校验语义。它不管你是写 JSON、SQL 还是配置项,只管“你在哪打字”。所以加完引号后,务必扫一眼是否所有引号都紧贴内容、无多余空格、无截断——尤其是缩进不一致或混用 Tab/空格的文件。











