sublime列选择唯一可靠方式是alt/option+鼠标左键垂直拖动,需一气呵成;选后粘贴仅作用于首行,须用ctrl+shift+l转多光标再操作。

Sublime 的列选择不是“开启一个模式”,而是一次性按键+拖动动作;按错键、松手早、斜着拖、缩进不统一,都会导致选区失败或错位。
列选择的唯一可靠触发方式
它不靠菜单开关,也不靠命令面板里的 Toggle Column Selection(那个命令已失效多年)。真正起作用的只有两个组合:
- Windows / Linux:
Alt+ 鼠标左键垂直拖动(必须一气呵成,不能先点再按Alt) - macOS:
Option+ 鼠标左键垂直拖动(Cmd+Option在多数系统版本中会被 Mission Control 拦截,别用)
拖动时看到灰色矩形块才表示成功;一旦横向偏移超过约 15°,Sublime 就判定为普通文本选择——这不是 bug,是设计如此。
为什么列选后粘贴只改了第一行
因为列选择生成的是「矩形选区」,不是多光标。Ctrl+V 默认只对第一个光标生效。要批量写入,得先转成多光标状态:
- 列选完成后立刻按
Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS),再粘贴 - 或者跳过粘贴步骤,直接用命令面板:
Ctrl+Shift+P→ 输入Insert Text at Carets→ 键入内容(不依赖剪贴板,更稳) - 如果中间点了空白处、按了
Esc、或触发了搜索(Ctrl+F),所有额外光标会瞬间消失
缩进不一致是列选错位的头号原因
Excel 粘贴进来、混用 \t 和空格、不同 Tab width 设置,都会让列边界在视觉上对齐、实际字符位置偏移。结果就是:看着选中了第 12 列,一输就劈开中文,或某行突然少一格。
- 操作前务必执行:
Ctrl+Shift+P→Convert Indentation to Spaces - 再执行:
Ctrl+Shift+P→Set Indent Width: 4(按项目习惯设 2 或 8) - 含中文时,字体必须是等宽(如
Fira Code),且关闭View → Word Wrap - 遇到折叠代码块?先
Ctrl+K→Ctrl+J展开全部,否则列选会在折叠行断开
键盘替代方案比鼠标更准
尤其跨屏、高缩放、或目标列在屏幕外时,鼠标拖动极易偏移。更可控的做法是:
- 把光标定位到首行目标列(比如用
Ctrl+→跳词,或Ctrl+Shift+→选词后微调) - 然后按
Ctrl+Shift+↓(Win/Linux)或Cmd+Shift+↓(macOS)向下逐行追加光标 - 这样生成的光标严格按字符列数对齐,不受缩进类型干扰
- 若需插入固定内容(如
:或;),直接敲,比粘贴更不易错位
真正的难点不在“怎么选”,而在“选得是否真对齐”——只要缩进、折叠、换行、字体四者中有一个没调好,列编辑就会静默失效,而且很难一眼发现错在哪。











