sublime text 原生不支持仅用鼠标中键触发列选择,因中键在linux x11下默认粘贴、macos下常被劫持;真正列选需按住alt/option+左键垂直拖动。

Sublime Text 原生不支持仅用鼠标中键触发列选择——中键单独拖动 = 粘贴剪贴板内容,不是列选。
为什么中键拖不动列选区
Sublime 的中键行为由操作系统和窗口管理器直接接管:Linux X11 下中键=粘贴,macOS 中键默认无绑定但常被输入法或辅助工具劫持。即使你看到“中键拖选生效”,大概率是误触了 Alt+中键 或 Cmd+中键 这类组合键,而非中键本身。
- 单独按中键再拖动 → 触发系统级粘贴(尤其在终端、IDE 中高频复现)
- 松开中键后光标跳到某行末尾 → 实际是粘贴动作完成 + 光标自动移到粘贴内容末尾
- 选区呈斜向或断续 → 根本没进入列模式,只是普通文本拖选被鼠标抖动干扰
Alt/Option + 左键才是唯一可靠鼠标列选路径
所有稳定实测案例都指向同一个操作链:修饰键按住 → 鼠标左键按下 → 垂直拖动(上下为主,可微斜但横向位移需
- Windows/Linux:
Alt+ 左键拖动(不是 Ctrl+Alt,不是 Shift+Alt) - macOS:
Option+ 左键拖动(Cmd或Ctrl单独按均无效) - 拖动起始点必须落在目标列位置上——比如想改第 15 列的字符,光标先手动移到第 15 列再按 Alt+拖
- 若文件启用了软换行(
word_wrap: true),列选会跨视觉行断裂,务必先关掉
列选完只改第一行?立刻补按 Ctrl+Shift+L
矩形选区 ≠ 多光标。Sublime 默认把列选结果当做一个整体选区,输入只作用于首行首字符位置。必须手动转成多光标才能同步编辑。
- 按
Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(macOS)→ 每行一个独立光标,位置对齐列选起始列 - 如果已误输文字,
Ctrl+Z撤回后立刻补按Ctrl+Shift+L,不用重选 - 该步骤不可跳过,也没有替代快捷键——
Ctrl+Shift+P里搜 “Split Selection” 找到的命令效果相同,但慢三拍
真正容易被忽略的对齐陷阱
列选位置漂移从不报错,但会让你批量修改漏行或错列。Tab 和空格混用、不同缩进宽度(4 vs 2)、折叠代码块都会让“第 12 列”在各行物理位置不一致。
- 执行
Ctrl+Shift+P→ 输入Convert Indentation to Spaces,统一为纯空格缩进 - 临时开启
"draw_white_space": "all",看清 Tab(显示为 →)和空格(·)分布 - 检查是否开启了
vintage_mode:在控制台运行view.settings().get("command_mode"),返回True就得关掉,否则 Alt 键会被拦截











