Sublime Text列选择是Alt/Option+鼠标左键垂直拖动的瞬时动作,非模式;选后需Ctrl+Shift+L转为多光标才能批量编辑,且依赖缩进统一与编码一致。

列选择不是模式,是“按住+拖”的瞬间动作
Sublime Text 没有「开启列编辑模式」这回事。所谓列选择,就是你按下特定修饰键、同时鼠标垂直拖动的那一个瞬间触发的行为——松开鼠标,选区就定了,没有开关、不存状态、不靠命令面板里的 Toggle Column Selection(实测无效,纯属历史残留)。
最稳路径只有一条:Alt(Windows/Linux)或 Option(macOS)+ 鼠标左键,从起始位置垂直向下拖动。拖动时看到灰色矩形块,松手即生效。
- 别斜着拖:横向分量稍大,Sublime 就判定为普通文本选择,不是列
- 别松了再按:必须
Alt+ 鼠标左键一气呵成,中途释放就退回到单光标 - 别信“中键拖拽”:原生不支持;没按修饰键就点中键,只是系统级粘贴(尤其在 Linux X11 下)
列选完不批量编辑?漏了 Ctrl+Shift+L 这步
列选区域本身是个“矩形选区”,不是多个独立光标。Sublime 默认只对首个光标执行输入/删除操作,其余行纹丝不动——这是新手踩坑率最高的地方。
正确做法是:列选完成后,立刻按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS),把矩形块拆成每行一个光标。这时再敲 //、; 或粘贴内容,才会同步作用于所有行。
- 粘贴多行内容会错位:剪贴板若含换行符,
Ctrl+V会把整块内容插到每个光标处,导致列崩坏;建议先清空剪贴板,或确保只粘单行 - 空行会跳列:列选跨过空行时,光标自动落到下一行开头而非原列位置;提前删空行,或用
Ctrl+Shift+L后手动调光标 - 按
Ctrl+Z撤回后,补按Ctrl+Shift+L即可挽救,不用重来
缩进和编码异常会让列边界静默偏移
列选择本质是按字符列定位,极度依赖每行实际可见字符的水平对齐。一旦某行缩进混乱(比如混用 Tab 和空格)、或文件含 BOM、或编码不统一(UTF-8 vs GBK),Sublime 就会算错列位置——不报错,但光标落点偏了,改得不全还发现不了。
- 执行
Ctrl+Shift+P→Set Syntax: Plain Text,关掉语法高亮插件干扰(尤其 YAML/JSON 等缩进敏感语言) - 怀疑列不准?按
Ctrl+Shift+P→Show Scope Name,看光标当前列号是否一致 - 编辑前先执行
Ctrl+Shift+P→Convert Indentation to Spaces统一缩进 - 在设置里临时关掉
"detect_indentation": false,避免自动识别干扰
键盘比鼠标更可控,尤其面对长列表或高分辨率屏
当鼠标拖不准(比如屏幕分辨率高、触控板精度低、或戴手套调试远程桌面),直接放弃拖拽,改用键盘组合:
- 将光标定位到起始列,按住
Ctrl+Alt(Windows/Linux)或Cmd+Option(macOS),再用↑/↓键逐行增加光标 - 配合
←/→微调光标位置,比拖拽更精确 - 对不等长的行同时操作(如批量加引号、补逗号)更可靠
- 系统快捷键冲突时(如 macOS 的 Mission Control 占用
Cmd+Option+↑),优先用鼠标Alt+拖拽,而非硬改系统设置
真正难的不是怎么选,而是怎么让“看起来对齐”的列,在 Sublime 内部也真对齐——它认的是字符位移,不是视觉像素。缩进不统一、编码混杂、插件干扰,都会让列选悄悄失效,且毫无提示。

















