Ctrl+Shift+L 是拆分已有选区而非给每行加光标,仅对含换行符的选区生效;正确操作需先用 Ctrl+L 逐行扩展选区,再执行该命令,随后可配合 Home、Alt+拖拽、Ctrl+D 等实现精准批量编辑。

Ctrl+Shift+L 不是“给每行加光标”,而是拆分已有选区
很多人按 Ctrl+Shift+L 没反应,不是快捷键失效,而是根本没选中内容。这个命令只对「当前选区」生效,且按换行符切开——选区里必须含换行符,它才拆出多个光标。
常见失败场景:
- 空着没选就按 Ctrl+Shift+L:静默失败,无提示
- 只双击一个词再按:选区不含换行,无法拆
- 选中多行但末尾带空格或制表符:光标落在空格后,一输内容就把缩进顶乱
正确做法:
- 先用 Ctrl+L 选中当前行(光标在行内任意位置即可)
- 再连按 Ctrl+L 将下一行加入选区,直到覆盖目标范围
- 最后按 Ctrl+Shift+L —— 此时每行末尾出现光标
- 立刻按 Home(Windows/Linux)或 Cmd+←(macOS),所有光标跳到行首
用 Ctrl+D 逐个确认变量边界,避免误改 JSON 或注释
批量改 SQL 字段名或表别名时,Alt+F3 全局匹配风险极高:user_id 会同时命中 SELECT user_id FROM users、"user_id": "123" 和 -- deprecated user_id。
Ctrl+D 是唯一可控路径:
- 双击第一个
user_id,手动确认它确实在 SELECT 子句里 - 按一次
Ctrl+D:只高亮当前词,不跳转 - 再按一次:找下一个,你实时看到它是否落在字符串或注释中
- 发现误匹配?立刻按
Ctrl+U撤回上一个;想跳过当前项?按Ctrl+K再按Ctrl+D
变量含 $(如 $id)时,查找必须写成 $id\b,否则 $ 被当正则行尾锚点,匹配失效。
SQL 字段批量加别名或逗号,列选模式比正则更稳
给 SELECT 列表加 AS xxx 或补逗号,用正则容易漏掉最后一行或错配括号;列选(Alt+鼠标拖拽)直接、所见即所得。
操作要点:
- 先用
Ctrl+L选中所有字段行(确保每行只有一字段名) - 按
Ctrl+Shift+L拆光标到每行末尾 - 按 Home 对齐到行首,再 Alt+鼠标纵向拖拽,框住所有字段名右侧空白区
- 松手后输入
, AS或AS,自动对齐
注意:若字段含函数如 UPPER(name),列选前需先统一格式(比如用正则 (\w+\([^)]*\)) 提取函数体再处理),否则纵向对齐会错位。
跨文件重命名表名或字段,必须用 Ctrl+Shift+H + 正则锚定
单文件里改 users 为 user_profiles,用 Ctrl+D 还能控;但涉及 JOIN、WHERE、CREATE TABLE 多处引用,必须跨文件查全量上下文。
关键步骤:
- 确保已通过
Project → Add Folder to Project…加入代码根目录,并保存项目(否则Where范围不准) -
Where框填src/**/*.sql或!migrations,!test,*.sql,排除干扰路径 - 查找框填
\busers\b(?!\.)((?!\.)排除users.id中的误匹配),替换为user_profiles - 务必先点
Find All,右侧边栏列出所有匹配项(含文件路径、行号、上下文),双击任一项跳转验证
最易忽略的一点:SQL 中的字符串字面量(如 'users' 或 "users")也会被匹配,必须人工核对每一处——编辑器不区分语法角色,只认文本。


















