列选择光标“不同步”是因矩形选区按屏幕坐标而非逻辑行对齐;需确保等宽字体、关闭软换行、统一Unix换行符,Alt+Shift失效时用命令面板进入列选,退出后按Ctrl+Shift+L转多光标。

列选择为什么光标看起来“不同步”
这不是光标不同步,而是 Sublime 的列选择(Column Selection)本质就是矩形选区——它按屏幕坐标切,不按逻辑行或字符边界对齐。如果你的文件用了非等宽字体、某行缩进用空格混制表符、或某行末尾有不可见空格/\r\n,松开鼠标后光标就会错位。这不是 Bug,是设计前提:它只保证“你拖出来的矩形区域里每个位置都可编辑”,不保证“每行光标落在语义相同的位置”。
列选择前必须确认的三件事
- 字体必须设为等宽(如
Fira Code、Consolas或JetBrains Mono),系统 UI 字体或微软雅黑会直接导致垂直错位 - 关闭软换行:
View → Word Wrap必须为关闭状态,否则换行会打断列连续性 - 统一换行符:
Ctrl+Shift+P → Set Line Endings → Unix,避免\r\n和\n混用导致行高不一致
Alt+Shift 拖不动或松手就歪?试试命令面板替代方案
远程桌面、某些 Linux 桌面环境或键盘布局下,Alt+Shift+鼠标拖拽 常被系统劫持(比如触发 Alt+Tab)。此时别硬试快捷键,改用命令面板:Ctrl+Shift+P → 输入 Column Selection → 回车。它会强制进入列选模式,之后用方向键或鼠标微调起始/结束位置更稳。退出时按 Esc,不是点击空白处——后者可能残留部分选区。
列选择后想转成真正多光标再操作?不能直接切
列选择和多光标是互斥模式。你无法在列选状态下按 Ctrl+D 或 Ctrl+Shift+L。必须先按 Esc 退出列选,此时所有列选中的内容会被保留为普通选区;再按 Ctrl+Shift+L,就能把每一行的选中段拆成独立光标——这才是“同步输入”的起点。漏掉这一步,就只能整块替换,没法逐行微调。
列选择真正的难点不在拖,而在拖之前是否清掉了干扰因素:混合换行符、软换行、非等宽字体、缩进不一致——这些细节不处理,光标永远“看着对齐,实际错位”。











