最稳通用的列选择方式是:Windows/Linux按Alt+鼠标左键垂直拖动,macOS按Option+鼠标左键垂直拖动;拖动时出现灰色矩形即生效,斜拖或误用Ctrl/Cmd拖拽会导致普通文本选择。

Sublime 的列选择不是“开启一个模式”,而是按住特定键+鼠标拖动的实时动作;用错组合键或环境配置不对,就只能选出普通文本块。
怎么用鼠标触发真正的列选择(Windows/Linux/macOS)
最稳、最通用的方式是:按住 Alt(Windows/Linux)或 Option(macOS),再用鼠标左键垂直拖动——拖动时看到灰色矩形选区,松开即生效。
- 别用
Ctrl+拖拽(Windows/Linux)或Cmd+拖拽(macOS):默认是普通文本选择,不是列选 - 纯垂直拖最可靠;斜着拖容易被 Sublime 误判为行内扩展,尤其当某行末尾有空格时
- 中键拖拽不原生支持列选;必须配合
Ctrl(Win/Linux)或Cmd(macOS)才可能生效,但兼容性差,不推荐依赖 - 如果拖不动或光标变箭头却不响应,先检查是否启用了
Vintage模式(view.settings().get("command_mode")返回True就是开了)
键盘党怎么不用鼠标做列选择
适合结构对齐良好的代码块,比如多行赋值语句的右侧、JSON 的 value 区域、SQL 的 WHERE 条件列。
- 光标定位到起始位置后,按
Ctrl+Alt+↓(Windows/Linux)或Cmd+Option+↓(macOS)逐行向下加光标 - 想横向扩展列宽:先用
→或Shift+→扩展当前行选区,再用方向键纵向延伸 - 如果快捷键被系统占用(如 macOS 的 Mission Control 占了
Cmd+Option+↑),建议临时关闭系统快捷键,或改用鼠标方式 - 用
Ctrl+Shift+L(Win/Linux)或Cmd+Shift+L(macOS)可以把已选中的单列文本转为多光标——但要求各行对应位置字符数一致,否则光标会错位
为什么列选择后粘贴只作用于第一行
这不是 bug,是 Sublime 对「多光标粘贴」的默认行为限制:只有在光标未丢失、且剪贴板内容与光标数量匹配时,才会批量粘贴。
- 列选 →
Backspace或Delete清空原内容 → 确保所有光标仍在原位 →Ctrl+V,这是安全流程 - 如果中间点了空白处、按了
Esc或切换了窗口,多光标就只剩一个,Ctrl+V自然只贴到一行 - 剪贴板含多行内容时,
Ctrl+V行为不可控;建议先清空剪贴板,或确保是单行文本 - 更稳妥的替代方案:列选后执行命令面板里的
Insert Text at Carets(搜 “insert text” 即可),它强制对每个光标插入相同内容
哪些设置会让列选择失效或错位
列操作极度依赖视觉对齐,以下设置会直接破坏列选效果:
-
"auto_indent": true和"detect_indentation": true:Sublime 会自动调整缩进,导致空行或混合缩进(空格+Tab)时列光标跳到行首 -
word_wrap: true:开启自动换行后,视觉上连续的列在底层被折行,拖选会断裂 - 折叠代码块(folded regions):列选跨折叠区域时,光标无法落到折叠行内部,实际选区中断
- 混合使用空格和 Tab 缩进:即使显示对齐,底层列偏移不一致,
Ctrl+Alt+↓类操作极易错行
真正麻烦的点不在“怎么触发”,而在于“触发前要不要先统一缩进、展开所有折叠、关掉自动换行”——这些准备动作常被跳过,结果列选看着没问题,一编辑就乱套。











