Ctrl+Shift+L只生成一个光标是因为选区不含换行符\n,Sublime Text仅依据实际\n判断多行;安全做法是先Ctrl+L逐行选择再执行。

Ctrl+Shift+L 为什么只生成一个光标
它不识别“看起来是多行”,只认你选区里有没有 \n。选区不含换行符,Ctrl+Shift+L 就当单行处理,只放一个光标。
常见翻车点:
- 鼠标拖选时松手早了,最后一行末尾的换行符没被选中
- 光标停在某行中间,直接按
Ctrl+Shift+L—— 选区只有零星字符,无\n - 文件开启了 soft wrap,视觉上换行但实际无
\n,Sublime 不认
安全做法:先用 Ctrl+L(Windows/Linux)或 Cmd+L(macOS)逐行选中目标行,再按 Ctrl+Shift+L,光标数 = 行数,稳。
多光标下 Home/End 键行为异常
Home 和 End 在多光标场景下不是“跳到逻辑行首/尾”,而是按当前光标位置做相对移动——而光标默认落在换行符前,也就是每行末尾。此时按 Home 才能跳到行首;如果误按 ←(左箭头),它只退一格,不是跳转。
更麻烦的是:Home 在有缩进、软换行或非等宽字体下行为不一致,可能停在缩进开头而非物理行首。
推荐做法:
- 用
←(左箭头)代替Home:所有光标同步向左移一个字符,连续按可精准退到每行最左非空白位 - 加前缀(如
//)前,先确保光标在物理行首:选完 →Ctrl+Shift+L→ 连按←直到停住 → 输入 - 空行也会被赋予光标,输入后变成
//\n;如需跳过,提前用正则^\s*$过滤
Ctrl+Click 加不上光标?检查 drag_text
默认开启的 drag_text 会让 Ctrl+Click(Windows/Linux)或 Cmd+Click(macOS)拖动文本,而不是添加光标。点十次,只留下最后一个光标,输入也只发生在那一个位置。
必须手动关掉:
- 打开
Preferences → Settings - 在右侧用户设置中加入:
"drag_text": false - 保存后建议重启 Sublime Text,部分版本不重启不生效
验证方式:按住 Ctrl 后轻点行首空白处,应立即出现新光标,而非拖动整行。
列对齐加光标(Ctrl+Shift+↑/↓)总失败
这个操作不是“列选择”,而是“在当前列向上/向下追加光标”,要求目标行在该列位置存在可编辑字符(不能是空格、制表符、空行或超出行宽)。
典型失败原因:
- 某行该列位置是空格或
\t→ 光标自动跳到该行行尾 - 缩进混用 Tab 和空格 → 列位置计算错乱
- 字体非等宽(如系统 UI 字体)→ 视觉对齐但字符坐标偏移
解决路径:
- 先运行
Ctrl+Shift+P→ 输入Convert Indent to Spaces统一缩进 - 换用等宽字体(如
Consolas或Fira Code) - 确认目标列有真实字符(比如想对齐
=,就先把光标放在第一个=上再按Ctrl+Shift+↓)
复杂点在于:它不跨文件、不支持软换行、也不处理折叠区域;一旦某行该列不可写,光标就“逃逸”到行尾,且无法回退——这是设计使然,不是 bug。

















