列选择选中的是鼠标拖拽形成的像素矩形内各行列范围,无视语法与逻辑行,仅按视觉位置取值;需关闭换行、显示空白符并统一缩进以确保准确。

列选择(竖向选区)到底选中了什么
列选择不是“多光标”,而是生成一个矩形文本块,它按屏幕坐标取值:从鼠标按下点到释放点,划出的像素矩形内所有行的对应列范围都会被选中。这意味着它不识别语法、单词边界或逻辑行,只认视觉位置。
常见错误现象:Shift+Alt+拖拽后发现空行没被选中、Tab缩进错位、软换行(soft_wrap)导致某行被截断——这些都不是 bug,是列选择的设计本质决定的。
- 必须关闭
View → Word Wrap,否则换行后的“同一列”在视觉上错开,列选会漏掉或跨行 - 开启
draw_white_space(Preferences → Settings中设"draw_white_space": "all"),能看清空格和 Tab 宽度,列选更准 - Tab 默认宽度为 4,但若文件混用空格和 Tab,列选可能在第 3 行突然偏移 1 列——这不是 Sublime 问题,是原始缩进不一致
怎么用列选择批量移动内容(比如统一右移/左移)
列选择本身不能“移动”,它只负责选中;真正实现“移动”,靠的是剪切 + 粘贴 + 光标定位三步联动。
典型场景:把 JSON 中所有字段名统一右移 2 格,对齐冒号;或把日志里的时间戳列整体左移删掉前缀。
- 先用
Shift+Alt+鼠标拖拽(Win/Linux)或Shift+Cmd+鼠标拖拽(macOS)框选出要移动的列区域 - 按
Ctrl+X剪切(注意:不是删除,是剪切,保留内容在剪贴板) - 把光标移到目标起始列(比如想右移 2 格,就用方向键或鼠标点到原列位置 + 2)
- 按
Ctrl+V粘贴——此时所有行会在相同列偏移下插入内容
关键点:粘贴时,Sublime 会以光标所在列为左边界,逐行插入剪切内容,所以光标位置决定了“移动后”的对齐基准。
列选择移动内容时容易卡住的几个地方
列选择 + 移动看似简单,但实际操作中常因上下文干扰失败,尤其在结构化文本里。
- 选区跨了空行?空行会被跳过,粘贴后出现错行——解决办法:先用
Ctrl+Shift+L把目标行转成多光标,再用End+Shift+←手动选中末尾内容,避免依赖列选 - 想移动的内容包含不同长度的单词(如
name和user_profile_id),列选会截断长词——这时该放弃列选,改用Ctrl+D逐个选中字段名再统一编辑 - 粘贴后发现每行缩进混乱?说明原列选包含了 Tab 或混合空格——粘贴前先按
Ctrl+Shift+P输入Convert Indentation to Spaces统一缩进
列选择适合“机械对齐”,不适合“语义迁移”。一旦内容长度不一致、缩进不规范、或需要保留上下文关系,它就不再是最快解法。

















