sublime text列模式编辑本质是多光标,通过alt+拖拽(win/linux)或ctrl+cmd+拖拽(macos)触发,需关闭软换行、避开折叠区与非对齐区域,键盘操作(如ctrl+shift+l)更精准稳定。

Sublime Text 里列模式编辑的本质是多光标,不是“按 Alt 拖鼠标”本身
列模式编辑在 Sublime Text 中没有独立开关,它只是多光标的一种触发方式。真正起作用的是 alt+鼠标拖拽(Windows/Linux)或 ctrl+cmd+鼠标拖拽(macOS),但这个操作只有在当前视图未启用“soft wrap”且光标落在纯文本区域时才可靠生效。一旦启用了换行(view.set_setting("word_wrap", True)),拖拽会变成选中整行而非列块。
- 确认关闭软换行:
view.settings().set("word_wrap", False) - 避免在折叠代码块、注释区或 Markdown 表格内尝试——这些区域的字符对齐不可靠,容易错位
- 如果拖拽后只出现单个光标,大概率是鼠标移动过快触发了普通选中,需缓慢垂直拖动
用快捷键批量生成列光标比鼠标更稳定
鼠标列选在长文件或高 DPI 屏幕上容易偏移,而键盘操作能精准控制光标位置。最常用的是 ctrl+shift+L(Windows/Linux)或 cmd+shift+L(macOS),它把当前选中文本按行拆分,每行一个光标;配合 ctrl+↑/↓ 可以逐行增删光标,适合对齐已有内容。
- 先选中目标行(如连续 5 行的开头),再按
ctrl+shift+L,光标会落在每行选中位置 - 若想在每行末尾加内容,可先用
ctrl+shift+↑/↓扩展选中到行尾,再执行光标分裂 -
ctrl+click(多平台一致)手动点选多个位置,适合非连续行或跳行编辑
列编辑后粘贴内容会自动广播到所有光标位置
这是列编辑最实用的特性,但新手常误以为要“复制一列再粘贴”,其实只要光标就位,一次 ctrl+V 就够了。粘贴内容会原样出现在每个光标处,长度不一致也没关系——Sublime 不做对齐补偿,它只做“位置映射”。
- 复制的文本含换行符?不会跨行广播,只会粘贴到当前光标所在行
- 如果某行光标位于行中,粘贴后其他行也会插在相同列号位置,可能破坏缩进——建议统一将光标放在行首或行尾再操作
- 撤销(
ctrl+Z)会一次性撤回全部列编辑动作,无法单独撤销某一列
列编辑失效时优先检查插件冲突和配置覆盖
某些插件(如 Emacs Pro Essentials、SideBarEnhancements 的旧版本)会劫持 alt+drag 事件;另外,用户配置里若存在 "drag_text": false 或自定义了 mouse_map,也会禁用列选功能。
- 临时禁用所有插件:菜单
Preferences → Package Control → Disable Package,逐个排查 - 检查用户设置文件是否有
"drag_text"相关项,删掉或设为true - 重置鼠标绑定:在
Preferences → Key Bindings – User中搜索drag_select,确保没有被覆盖











