ctrl+shift+l不是开启模式而是实时叠加光标;它只对含换行符的选区生效,本质是按\n切片并在每行末尾放光标,失败主因是选区无换行符或未正确选中。

多光标编辑不是“开启一个模式”,而是靠快捷键实时叠加光标位置;用错触发方式或忽略选区范围,90% 的失败都发生在这两步。
Ctrl+Shift+L 为什么没反应?先看选区有没有换行符
这个命令只对含换行符的选区生效,本质是“把选区按 \n 切片,每片末尾放一个光标”。常见静默失败场景:
- 光标空着就按
Ctrl+Shift+L:无任何提示,也不报错 - 双击一个词再按:选区不含
\n,只生成一个光标 - 鼠标拖选多行但没选中末尾换行符:Sublime 当作单行处理
安全做法:先用 Ctrl+L 选中当前行,连续按 Ctrl+L 扩展到目标行数,最后按 Ctrl+Shift+L——此时状态栏会显示类似 5 lines selected,光标稳稳落在每行末尾。
给 SQL 值批量加单引号和逗号,别直接多光标输
结构不干净时(如混有空格、NULL、数字、已有引号),Ctrl+Shift+L 加 ' 会错位甚至污染语法。真正可控路径是:
- 先人工框定数据块(比如
Ctrl+鼠标拖选所有值行) - 打开替换面板
Ctrl+H,勾选Regular Expression和In Selection - 查找:
^([a-zA-Z_][a-zA-Z0-9_\s\-]{2,})$→ 替换:'$1'(排除短标识符和纯数字) - 再查:
\r?\n→ 替换:,(注意空格,避免粘连) - 手动在开头加
IN (,结尾加),删掉最后一行末尾多余逗号
如果原始数据来自 CSV 且字段间无空格,可用更宽松的 ^([^,\n\r]+)$,但必须确认没有嵌套逗号(如 CONCAT('a,b', 'c'))。
列选择(Alt+拖拽)比正则更适合加 AS 别名或补逗号
正则容易漏掉最后一行或错配括号;列选择所见即所得,但依赖格式统一:
- 先用
Ctrl+L逐行选中所有字段行(确保每行只含一个字段名,无注释/缩进干扰) - 按
Ctrl+Shift+L拆光标到每行末尾,再按Home对齐到行首 - 按住
Alt(Windows/Linux)或Option(macOS),鼠标纵向拖拽框住所有字段名右侧空白区 - 松手后输入
AS或,,自动对齐
若字段含函数(如 UPPER(name)),列选前先用正则 (\w+\([^)]*\)) 提取并统一格式,否则纵向对齐会偏移。
Ctrl+D 改字段名时,如何避开字符串和注释里的同名内容
Ctrl+D 是字面匹配,不区分上下文。误改 "user_id": "123" 或 -- deprecated user_id 是高频事故:
- 先双击第一个目标字段名(如
user_id),确认它确实在SELECT或FROM子句中 - 按一次
Ctrl+D:只高亮当前词,不跳转 - 再按一次:找下一个,你实时看到光标是否落在引号内或
--后 - 发现误匹配?立刻按
Ctrl+U撤回上一个;想跳过当前项?按Ctrl+K再按Ctrl+D - 变量含
$(如$id),查找必须写成\$id\b,否则$被当正则行尾锚点
跨文件重命名表名或字段,必须用 Ctrl+Shift+H + 正则锚定(如 \busers\b),不能依赖 Ctrl+D。
最易被忽略的点:多光标下按 Enter 会在每个光标处插入新行,不是只在最后一行换行;Trim Trailing White Space 必须在加右括号前执行,否则生成 'xxx' ), 这类非法格式。











