Sublime Text列选择是Alt/Option+鼠标左键垂直拖动的瞬时操作,非模式;选后需Ctrl+Shift+L转为多光标才能批量编辑,缩进不统一会导致静默偏移。

列选择不是模式,是“按住+拖”的瞬间动作
Sublime Text 没有「开启列编辑模式」这回事。所谓列选择,就是你按下 Alt(Windows/Linux)或 Option(macOS),同时鼠标左键垂直拖动的那一个瞬间触发的行为——松开鼠标,选区就定了,不存状态、不靠命令面板里的 Toggle Column Selection(实测无效,纯属历史残留)。
最稳路径只有一条:Alt + 鼠标左键从起始位置垂直向下拖动。拖动时看到灰色矩形块,松手即生效。
- 别斜着拖:横向分量稍大,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即可挽救,不用重来
配置类文本常见陷阱:缩进和编码不一致会让列静默偏移
YAML、INI、.env 等配置文件常混用 \t 和空格缩进,或含全角字符、BOM 头。Sublime 的列选择基于屏幕坐标计算,一旦缩进不统一,列边界就会静默右偏或左跳,表面看选中了,实际每行光标列数不同。
例如:某行用 2 个 \t 缩进,另一行用 4 个空格,你列选第 6 列,结果前者落在 key 名前,后者落在等号上——后续插入 # 就会错位。
- 执行
View → Indentation → Convert Indent to Spaces统一为空格 - 检查编码:右下角状态栏点开编码名,选
UTF-8(避免UTF-8 with BOM) - 禁用
word_wrap:配置文件通常不应软换行,开启后列选会把视觉换行当真实行处理 - 折叠代码块(如 YAML 中的
---分隔段)会打断列选,必须先展开再操作
比列选更稳的替代方案:Insert at Beginning of Line
如果你只是想给多行加前缀(比如统一加 ENABLE_ 或注释掉 # ),列选反而容易因缩进偏差出错。此时直接用命令面板更可靠:
按 Ctrl+Shift+P → 输入 Insert at Beginning of Line → 回车,然后输入要插入的内容。它不依赖横向对齐,也不怕空行或缩进差异,本质是为每行首字符位置插入光标并批量输入。
- 适用场景:批量添加环境变量前缀、统一注释配置项、补全
key=左侧字段 - 不适用场景:需要在中间某一列对齐插入(比如所有
=右侧补默认值) - 搭配
Ctrl+Shift+L可实现“先按行切开、再横向移动光标到等号后”,比纯列选容错更强
列选择真正难的不是怎么触发,而是判断当前文本是否“适合列选”——缩进是否干净、是否有不可见字符、是否被折叠或软换行干扰。很多看似“功能失效”的问题,其实只是 Sublime 忠实地按屏幕坐标执行了,而你的配置文本已经悄悄偏离了对齐预期。

















