sublime列选择唯一可靠路径是alt(win/linux)或option(macos)+鼠标左键垂直拖动,属瞬时动作而非模式;拖动见灰色矩形即生效,斜拖、松键、错键均导致普通选择。

Alt/Option + 左键垂直拖拽才是唯一可靠路径
Sublime Text 的列选择不是“开启模式”,而是修饰键 + 鼠标左键拖动的瞬时动作。Windows/Linux 必须按住 Alt,macOS 必须按住 Option(不是 Cmd 或 Ctrl),再点击并垂直向下拖动——顺序不能错:先按住键,再点左键,再拖。反着来(比如先点再按)大概率只选中单行文本块。
拖动过程中看到灰色矩形框,才说明列选生效;如果光标变成箭头、没框、或只高亮了首尾两行中间一段,基本就是修饰键没按对、拖动角度偏斜、或中途松过手。
- 横向偏移超过 15° 就退化为普通文本选择,所以尽量“陡直”拖,别斜着拉
- 空行、折叠代码块、
word_wrap: true都会导致列区断裂,操作前建议先执行Ctrl+K→Ctrl+J展开全部折叠,并关闭软换行 - 若拖不动,检查是否启用了 Vintage 模式:
view.settings().get("command_mode")返回True就是开了,得关掉
为什么 Shift + 左键 / 右键 / 中键都不行
Shift + 左键 是普通行扩展选中,不是列选;Shift + 右键 在 Sublime 原生中无绑定,实际触发的是系统菜单或触控板映射干扰;鼠标中键(滚轮按下)在 Sublime 中仅用于侧边栏打开文件、关闭标签页等,完全不参与列选择逻辑。
所谓“右键能列选”的反馈,99% 是以下情况之一:
- 误把
Alt + 左键记成右键(尤其触控板双指按压被识别为右键,但实际执行的是左键拖拽) - 装了插件(如
ColumnSelect)重绑了右键行为 - 关掉所有插件后重试,基本立即失效——可验证是否真依赖原生功能
列选后粘贴只改第一行?因为你还没转多光标
列选生成的是「矩形选区」,不是多光标。直接 Ctrl+V 只会作用于第一个光标位置,其余列位置保持不变。这不是 Bug,是状态未转换。
正确做法分两步:
- 列选完成后,立刻按
Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(macOS),将矩形选区转为多个独立光标 - 再
Ctrl+V,就能同步粘贴到所有行对应列位置 - 更稳妥的替代:用命令面板
Ctrl+Shift+P→ 输入Insert Text at Carets,直接输入内容,不依赖剪贴板,避免多行内容长度不一致导致错位
缩进不统一时列选必然错位,别硬拖
混用 \t 和空格、或不同 tab_width 设置下,Sublime 按屏幕像素对齐列边界,而非字符逻辑位置。看着对齐,一输就歪。
实操前务必归一化缩进:
- 执行
Ctrl+Shift+P→ 输入Convert Indentation to Spaces - 确认当前视图的
tab_size设置一致(可在Preferences → Settings查看) - 避免在有折叠块或长行自动换行(
word_wrap)的文件里直接列选
列编辑真正难的从来不是怎么按键,而是每次动手前要不要先展开折叠、清空空行、统一缩进——这些准备动作漏一步,后面全白忙。











