Sublime列选择需按Alt/Option键拖拽,非Ctrl/Cmd;列选后打字可批量加前缀,但须严格对齐缩进;行首加前缀推荐用Insert at Beginning of Line命令或正则替换^;Delete删光标后字符,Backspace才删选区。

列选择根本不是鼠标拖拽出来的矩形
Sublime 的列选择(Column Selection)和普通文本选择逻辑完全不同:按住 Ctrl(Windows/Linux)或 Cmd(macOS)再用鼠标左键拖拽,只会选中垂直列;但很多人误以为要“先框出一块”,结果选成普通块、漏掉行尾或跨空格错位。真正可靠的列选择方式是:按住 Alt(Windows/Linux)或 Option(macOS),再鼠标拖拽——这是 Sublime 原生列模式的唯一触发键。
常见错误现象:Ctrl + 鼠标拖拽 在某些系统或输入法下会被拦截,实际触发的是多光标而非列选;Shift + 方向键 只能横向扩展,无法竖向对齐。
批量加前缀必须配合多光标编辑
列选择本身只是“选中一列位置”,真正插入内容要靠多光标输入。选中目标列后,直接打字即可在每一行对应位置插入相同内容。但要注意几个关键点:
- 列选区域必须严格对齐:如果某行缩进不一致(比如混用空格和 Tab),列选会错位,导致前缀插到中间甚至覆盖原有代码
- 若想在每行行首加前缀(如
//注释),不要列选第一列,而应先用Ctrl+Shift+L(Split into Lines)把每行转为独立光标,再按Home跳到行首(注意:需关闭ensure_newline_at_eof_on_save等干扰设置) - 使用
Ctrl+Shift+P输入Insert at Beginning of Line命令更稳定,尤其适合处理混合缩进的 Python 或 JSON 文件
用正则替换比列选择更安全的场景
当目标行结构不规则(如日志片段、HTML 标签混排、缩进深度不一),列选择极易出错。此时用 Ctrl+H 打开替换面板,勾选 .*(正则模式),输入:
^
替换为:
//
就能在每行开头加 // 。这个 ^ 表示行首锚点,不受缩进影响。类似地:
- 给所有非空行加前缀:
^(?!\s*$)→ 替换为// - 只给含特定关键词的行加前缀:
^(?=.*fetch)→ 替换为debug: - 注意
\n不匹配行首,^才是正确锚点;用\r\n或\n做替换内容时,可能破坏换行符一致性
列选择后按 Delete 键会删错位置
列选状态下按 Delete,Sublime 默认删除的是“每个光标后的字符”,不是“整列”。也就是说,如果你列选了第 5–10 列,按 Delete 实际删掉的是每行第 10 列之后的第一个字符——这通常不是你想要的。正确做法是:
- 列选后按
Backspace:它会删除光标左侧的字符,即真正删掉列选区域内的内容 - 或者先按
Ctrl+X剪切,再按Ctrl+V粘贴到别处验证是否选对 - 如果已误删,
Ctrl+Z可撤回,但列选状态不会自动恢复,需重新操作
列选择看着简单,但缩进敏感、键位依赖平台、删除行为反直觉——这些细节没踩过两次坑很难记住。

















