Sublime Text列选择无开关模式,需Alt/Option+鼠标垂直拖拽生成矩形选区;选后须按Ctrl+Shift+L转多光标才能同步编辑,否则仅首行生效;缩进混用空格与Tab会导致错位,建议统一为空格并关闭自动检测。

列选择不是“开启模式”,而是实时拖拽动作
Sublime Text 没有「列编辑模式开关」,按菜单、命令面板或插件 Toggle 都无效——它只响应特定按键 + 鼠标拖动的瞬时组合。你松开 Alt/Option 键那一刻,矩形选区就固定了,后续操作全基于这个选区状态。
最稳路径只有一条:Alt(Windows/Linux)或 Option(macOS)+ 鼠标左键垂直拖动。拖动时看到灰色矩形块,说明成功;若出现波浪线或高亮不规则文本块,就是拖斜了或没按住键。
- 横向位移超过 10 像素,Sublime 就判定为普通行选择
- 中途松开
Alt再按,只会触发新单光标,不会延续列选 - Vintage 模式启用时(
view.settings().get("command_mode")返回True),Alt+拖拽会被拦截,需先退出命令模式
列选完直接敲字只改第一行?漏了 Ctrl+Shift+L
列选择生成的是一个矩形选区(Region),不是多个光标。Sublime 默认只对首个光标位置执行输入/删除,其余行保持不动——这是新手最高频的卡点。
正确流程是:列选完成后,立刻按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS),把矩形块转成每行一个独立光标。这时再敲 //、self. 或粘贴内容,才会同步生效。
- 如果粘贴后只有第一行变化,大概率是忘了这一步
-
Ctrl+Shift+L不校验列对齐,空行会导致光标跳到下一行开头,建议提前删空行或用Ctrl+Shift+J合并再手动拆 - 剪贴板含多行内容时,
Ctrl+V会逐行一对一覆盖,长度不匹配易错位;稳妥做法是先Delete清空列区,再Ctrl+V
缩进混用空格和 Tab 会导致列选错位
Sublime 的列选择按屏幕像素位置计算,不是按字符索引。一旦文件中混用 \t 和空格,或启用了 "translate_tabs_to_spaces": true 但原始文本含 Tab,看起来对齐的位置,实际字符偏移不同——光标会落在“视觉对齐、逻辑错位”的地方。
实操前建议做三件事:
- 执行
Ctrl+Shift+P→ 输入Convert Indentation to Spaces,统一为纯空格缩进 - 临时关闭自动检测:
Ctrl+Shift+P→Preferences: Settings,添加"detect_indentation": false - 切换语法为
Plain Text(Ctrl+Shift+P→Set Syntax: Plain Text),排除语法高亮插件干扰
键盘方式比鼠标更精准:用 Ctrl+Alt+↓ 逐行加光标
当鼠标拖拽总被判定为斜选,或需要跨非连续行编辑时,键盘方案更可靠:把光标放到起始行目标列,按 Ctrl+Alt+↓(Windows/Linux)或 Cmd+Option+↓(macOS)向下逐行添加光标。配合 →/← 微调位置,再用 Ctrl+Shift+L 确认,能绕过像素偏移问题。
这个方式对缩进敏感度低,且支持非连续行(比如跳过注释行),但前提是目标列在各行都存在(不能某行该列是空的)。
- 需确保设置中
"multi_cursor_modifiers": "ctrl"已启用(默认开启) - 若按
Ctrl+Alt+↓没反应,检查是否被输入法或系统快捷键劫持(尤其 macOS 的 Spotlight 默认占用了Cmd+Space) - 列选区域跨长行时,水平滚动后继续
Ctrl+Alt+↓仍有效,比鼠标拖拽更稳定
列选择真正的复杂点不在怎么选,而在于“选完之后光标落在哪”——它受缩进、空行、编码 BOM、甚至当前语法高亮规则共同影响。鼠标拖拽看着直观,但最容易在这些隐性条件上翻车。










