Ctrl+Shift+L只生成一个光标是因为它仅依据选区中实际存在的换行符(\n)切片,若拖选未覆盖行尾\n,即使视觉上跨多行也视为单行;安全做法是先用Ctrl+L逐行选中再统一触发。

Ctrl+Shift+L 为什么只生成一个光标
它不识别“看起来是多行”,只按你选区里实际存在的 \n 切片。选区不含换行符,就当单行处理——哪怕你拖选了 5 行,最后一行末尾没覆盖到 \n(视觉上常漏掉),结果就是 1 个光标。
安全做法:
- 先用
Ctrl+L(Windows/Linux)或Cmd+L(macOS)逐行选中目标行(每按一次加一行),再统一按Ctrl+Shift+L - 鼠标拖选后,按
Home把主光标拉到行首,再按Ctrl+Shift+L,避免光标落在缩进空格上 - 空行也会被拆出光标,但停在行首;若想补内容,得先按
End
选中单词后按 Ctrl+D 不生效或跳错位置
Ctrl+D 默认只匹配完整单词(match_whole_word: true),且严格从当前选区文本出发向下扫描,不是全局模糊搜。光标位置影响取词准确性:光标停在 user_id 中间,可能命中 api_v2_endpoint 里的 endpoint。
可靠做法:
- 双击精准选中目标词(如
user_id),确保不含前后空格、引号、点号 - 再连续按
Ctrl+D,它会严格按该选区文本匹配下一个相同内容 - 想跳过某处(比如字符串里的同名内容),按
Ctrl+K再按Ctrl+D - 误加太多?按
Ctrl+U撤销最近添加的光标;彻底退出多光标,直接按Esc
鼠标点击加光标没反应或变成拖动
这是 Sublime 默认开启 drag_text 导致的:按住 Ctrl(Windows/Linux)或 Cmd(macOS)点击时,编辑器优先尝试拖动已选中文本,而非添加光标。点十次只留下最后一个光标,输入也只发生在那一个位置。
必须操作:
- 打开
Preferences → Settings,在右侧用户设置中加入:"drag_text": false - 保存后建议重启 Sublime Text,部分版本不重启不生效
- 验证方式:按住
Ctrl后轻点行首空格,应出现新光标,而非拖动整行 - 点击位置很关键:避开单词中间、折叠符号、缩进区域;优先点行首空白、行尾换行符前、或纯空格段
列选择(Alt+拖拽)和多光标不是一回事
列选择生成的是矩形选区,不是多光标——它对字体宽度、行长度、软换行极度敏感,松开鼠标才转为光标。这不是 Bug,是设计如此。
正确姿势:
- 必须按住
Alt+Shift(Windows/Linux)或Option+Shift(macOS)再垂直拖动鼠标;只按Alt或只按Shift无效 - 使用等宽字体(如
Consolas、Fira Code),否则视觉偏移明显 - 列选择状态下不能用
Ctrl+D;想切回多光标,必须先按Esc退出列选 - 远程桌面或某些键盘布局下,
Alt+Tab可能拦截Alt+拖拽;可改用命令面板:Ctrl+Shift+P→ 输入Column Selection手动开启
Esc、方向键或 Ctrl+X,非主光标立刻消失;超过约 2000 个光标会静默丢弃。真正卡住人的,从来不是快捷键记不住,而是没看清光标到底落在哪——尤其是缩进空格、不可见字符、软换行这些地方。

















