Ctrl+Shift+L是“按换行符切选区”,仅对含\n的选区生效,否则静默失败;正确流程为先Ctrl+L选多行,确认状态栏显示“x lines selected”,再执行该命令。

Ctrl+Shift+L 不是“每行加光标”,而是“按换行符切选区”
很多人按 Ctrl+Shift+L 没反应,不是快捷键坏了,而是根本没选中含换行符的内容。这个命令只对已有选区生效,且必须包含 \n,否则静默失败。
- 空着直接按:无任何提示,也无光标出现
- 双击一个词再按:选区只有单词,不含换行,无法拆分
- 选中多行但末尾带空格或 Tab:光标落在空白处,一输内容就破坏缩进
- 正确做法:先用
Ctrl+L逐行扩展选区(光标在行内任意位置即可),确认状态栏显示 “x lines selected” 后,再按Ctrl+Shift+L
加单引号和逗号时,Home/End 必须配合 Trim Trailing White Space
批量加 ' 和 , 看似简单,但空格处理错一步,SQL 就报错。比如 'user_id' ), 中的多余空格会让 MySQL 直接拒绝执行。
- 按
Ctrl+Shift+L后,立刻按Home(Windows/Linux)或Cmd+←(Mac),把所有光标拉到真行首 - 输入
',再按End(或Cmd+→),跳到行尾 - 输入
',,此时每行变成'xxx', -
关键一步:在加右括号前,必须执行
Ctrl+Shift+P→ 输入Trim Trailing White Space,否则末尾空格会卡在')之间
字段名批量加 AS 别名,列选(Alt+拖拽)比正则更稳
用正则给 SELECT user_id, name, email 补 AS 容易漏掉最后一项或误包函数,而列选是所见即所得,不依赖模式匹配。
- 先用
Ctrl+L选中所有字段行,再Ctrl+Shift+L拆光标到行尾 - 按
Home对齐,然后按住Alt(Windows/Linux)或Option(Mac),鼠标纵向拖出矩形选区,框住所有字段名右侧空白 - 松手后直接输入
AS,自动对齐;若字段含UPPER(name),需先用正则(\w+\([^)]*\))提前提取并统一格式,否则列选错位 - 注意:列选只适用于字段横向对齐的场景,缩进不一致时优先用
Ctrl+D逐个确认
跨文件改表名或字段,Ctrl+D 是唯一可控路径
Ctrl+Shift+H 全局替换看着快,但 user_id 会同时命中 SELECT user_id、"user_id": "123" 和 -- deprecated user_id,批量炸库风险极高。
- 双击第一个目标字段(如
users),确保它确实在 SQL 上下文中(非 JSON 字符串、非注释) - 按一次
Ctrl+D:只高亮当前词,不跳转 - 再按一次:找下一个,你实时看到它是否落在错误上下文里
- 发现误匹配?立刻
Ctrl+U撤回;想跳过当前项?Ctrl+K再Ctrl+D - 含
$的变量(如$id)必须写成\$id\b查找,否则$被当正则行尾锚点,匹配失效
真正难的从来不是快捷键本身,而是判断哪段文本能安全交由多光标处理——结构越干净,越敢用 Ctrl+Shift+L;上下文越混杂,越得靠 Ctrl+D 一帧一帧确认。空格、缩进、嵌套括号、引号转义,这些细节不会报错,但会让生成的 SQL 在运行时突然崩掉。

















