列选择是Sublime Text中按矩形区域跨行选中文本的方式,区别于普通流式选中(遇换行即断),它垂直穿透多行,适合处理对齐内容;触发需Alt+拖拽(Win/Linux)或Cmd+Shift+拖拽(macOS)。

什么是列选择,和普通选择有什么区别
列选择是 Sublime Text 里一种按“矩形区域”选中文本的方式,不是按行或按单词,而是像用尺子框出一块长方形——哪怕跨多行、中间有空缺,也能一次性选中。它适合处理对齐的文本,比如 CSV 列、日志时间戳、代码前缀缩进等。普通鼠标拖选是流式选中(遇到换行就断),而列选择会无视换行,垂直穿透。
关键判断:如果你要删掉每行开头的 【DEBUG】,或者把 50 行末尾的 ; 全部去掉,但这些字符不在同一列位置——那列选择反而会漏选或误选,这时候该用正则替换。
怎么触发列选择(Windows/macOS 通用)
Sublime 默认不启用鼠标直接列选,得先按住修饰键再拖拽:
- Windows/Linux:
Alt+ 鼠标左键拖拽 - macOS:
Cmd+Shift+ 鼠标左键拖拽(注意不是Option,那是旧版行为)
如果拖完没反应,大概率是没按住键就松了鼠标,或者用了触控板没识别到多点手势。建议用鼠标操作;触控板用户可改快捷键,在 Preferences → Key Bindings 里加:
[
{ "keys": ["super+shift+drag"], "command": "drag_select", "args": {"subtractive": false, "by": "columns"} }
]
批量删多余字符的实操要点
列选择本身不带“删除逻辑”,它只是选中——后续操作决定效果。常见误操作是选完直接按 Delete,结果只删了第一行对应位置,其余行啥也没变(因为 Sublime 默认列选后编辑是“逐行映射”,但删除行为需显式触发)。
- 正确做法:列选完成后,按
Ctrl+Shift+K(Windows/Linux)或Cmd+Shift+K(macOS)——这是「删除整行」的快捷键,但它在列选状态下会变成「删除所选列区域内容」 - 更稳妥方式:列选后按
Ctrl+X(剪切),再按Esc取消选区,此时光标停在原位置,直接按Delete或Backspace就能清空所有被剪切的位置 - 如果目标字符长度不一(比如有的行是
[ERR],有的是[WARNING]),列选择会错位——这时必须用Find → Replace配合正则,例如^\[.*?\]\s*
容易被忽略的兼容性细节
列选择在某些插件下会失效,尤其是启用了 Origami(分屏)、BracketHighlighter(括号高亮)或自定义了 ignored_packages 的用户。如果发现 Alt+拖拽 没反应,先关掉插件试试。
另外,列选择无法跨折叠代码块生效——如果某几行被 Ctrl+Shift+[ 折叠了,列选会跳过它们。清理前记得先展开全部:Ctrl+K, Ctrl+J(Windows)或 Cmd+K, Cmd+J(macOS)。
最后提醒:列选择不保存撤销历史为“单步”,每次列删都是独立 undo 点。别指望一次 Ctrl+Z 撤回全部,得连按多次。











