Sublime列选择必须先按Alt/Option再左键拖动,否则无效;拖动需垂直、全程按住修饰键,松开或偏斜即退化为普通选择;列选后需Ctrl+Shift+L转多光标才能批量编辑。

鼠标拖拽列选择必须先按修饰键再点左键
Sublime 的列选择不是“开启模式”,而是修饰键 + 左键拖动的瞬时动作。如果先点下鼠标再按 Alt/Option,只会选中普通文本块,甚至光标跳转到点击位置——根本不会出现灰色矩形选区。
正确顺序只有这一种:先按住 Alt(Windows/Linux)或 Option(macOS),再按住鼠标左键开始垂直拖动。拖动过程中看到灰色矩形框,才是列选生效的视觉确认。
- Windows/Linux:严格用
Alt+ 左键,Ctrl或Shift+ 左键都不行 - macOS:用
Option+ 左键,Cmd+ 左键是普通文本选择,Cmd+Option+ 左键则大概率被系统快捷键拦截 - 拖动角度要陡:横向偏移超过 15 像素,Sublime 就判定为普通选择,不是列
- 空行、折叠代码块、
word_wrap: true都会让列区断裂,操作前先执行Ctrl+K → Ctrl+J展开所有折叠,并关闭换行
为什么拖着拖着就变成普通选中了?
常见现象:拖到一半突然变成斜向文字块、只选中首尾两行中间部分、松手后光标乱跳——基本都是中途松开了修饰键,或者拖动方向偏斜。
Sublime 对列选的判定非常严格:它不按字符列数对齐,而是按屏幕像素生成矩形区域。一旦横向位移过大,立刻退化为普通文本选择。
- 别斜拖:哪怕只是想“微调起始点”,也容易触发判定失败
- 别松手再补按:
Alt必须从按下到拖动结束全程按住 - 缩进不统一(比如混用
\t和空格)会导致视觉对齐但实际列错位,建议先执行Convert Indentation to Spaces - 如果拖不动或光标变箭头却不响应,检查是否启用了 Vintage 模式:
view.settings().get("command_mode")返回True就说明开了,得关掉
列选后粘贴只改第一行?那是没转多光标
列选生成的是「矩形选区」,不是多光标。直接 Ctrl+V 只会作用于第一个光标位置,其余位置保持不变——这不是 Bug,是 Sublime 的设计逻辑。
真正批量编辑的路径只有一条:把矩形选区转成多个独立光标,再输入或粘贴。
- Windows/Linux:列选后按
Ctrl+Shift+L,将当前列选转换为多光标 - macOS:列选后按
Cmd+Shift+L - 更稳的填值方式:列选 →
Ctrl+Shift+P→ 输入Insert Text at Carets→ 直接敲内容,不依赖剪贴板 - 如果中间点了空白处、按了
Esc、或触发了Ctrl+F等命令,所有额外光标立即消失,得重做列选
别信右键、中键、Cmd/Ctrl 单拖这些说法
Sublime 原生不支持鼠标右键列选择,也不支持中键(滚轮按下)触发列选。所有相关说法,要么是误判,要么来自第三方插件干扰。
验证很简单:关掉所有插件(Preferences → Package Control → Disable Package),再试右键或中键拖拽——几乎必然失效。
- 右键拖拽:在 Windows 是系统菜单,在 macOS 是上下文菜单,在 Linux 可能触发中键粘贴,和列选无关
- 中键拖拽:Sublime 官方从未实现该功能,Linux 下中键默认是粘贴,不是列选入口
-
Cmd或Ctrl单独 + 左键拖拽:默认就是普通文本选择,不是列选 - 如果非要用键盘快捷键,
Ctrl+Alt+↓(Win/Linux)或Cmd+Option+↓(macOS)更精准,但注意系统级快捷键冲突(比如 macOS 的 Mission Control)

















