ctrl+shift+l只在第一行出光标,因其仅检测选区是否含换行符;无\n或\r\n即单行处理,生成单光标;拖选需覆盖行尾换行符,或全选后执行,或用split selection into lines命令。

Ctrl+Shift+L 为什么只在第一行出光标?
它根本不看“你选了几行”,只检查选区里有没有 \n 或 \r\n。没包含换行符,就当单行处理,只生成一个光标。
常见错误现象:Ctrl+Shift+L 按完所有光标堆在第一行末尾,或干脆只出现一个光标。
- 鼠标拖选时,务必多拖一格——把光标拉到行尾换行符位置(哪怕看不见)
- 更稳做法:先
Ctrl+A全选,再按Ctrl+Shift+L - 若已选中但失效,用
Ctrl+Shift+P输入Split Selection into Lines命令,比重选更安全
想给每行开头/结尾加内容,别用 Ctrl+Shift+L 盲打
缩进不一致时,Ctrl+Shift+L 后按 Home 对齐极易错位;行尾同理,盲目按 End 在某些键盘或远程环境可能无效。
真正稳的方案是列编辑 + 正则定位:
- 行首加内容:用
Ctrl+H打开替换面板 → 开启正则 → 搜索^→ 点Find All→ 再按Ctrl+Shift+L→ 输入即可 - 行尾加内容:同样搜
$,Find All后Ctrl+Shift+L,直接输入 - 列编辑手动加前缀:按住
Alt+Shift,从第一行最左空格处向下拖到目标列,确保字体是等宽(如"font_face": "Consolas")
Ctrl+D 匹配不到目标词?检查 match_whole_word 和 drag_text
Ctrl+D 默认开启 match_whole_word: true,所以 user_id 不会匹配字符串字面量里的 "user_id";而 drag_text 开启时,Ctrl+Click 会优先拖动文本而非添加光标。
- 双击选中目标词(如
user_id),再按Ctrl+D,它才以该选区为基准匹配 - 想匹配子串?关掉查找面板里的
Match Whole Word,或用正则\buser_id\b - 禁用
drag_text:打开Preferences → Settings (User),加一行"drag_text": false,必须彻底退出 Sublime 再启动才生效
跨文件批量替换和误操作恢复的关键动作
Ctrl+H 或右键「替换」只作用于当前文件;所谓“多文件批量替换”,Sublime Text 里只有 Ctrl+Shift+F(macOS 是 Cmd+Shift+F)这一个合法入口。
-
Where栏填.表示整个项目根目录(含所有子目录) - 必须点
.*图标或按Alt+R启用正则,否则^、$全无效 -
Replace All后不会自动保存——必须手动Ctrl+Shift+S或点菜单File → Save All - 误删某处?
Ctrl+U可软撤销最近一次输入,但无法回退光标数;光标一旦被Esc、方向键或剪贴操作清空,就只能重来
多光标不是模式,是瞬时叠加状态;它对输入时机、选区结构、配置项极其敏感。最常被忽略的不是“怎么加”,而是“怎么不丢”——比如拖选漏了换行符、drag_text 没关、搜完忘了按 Ctrl+Shift+L 就直接敲字。











