ctrl+鼠标左键拖拽无反应,90%是按键未进入sublime:先用sublime.log_input(true)验证,无输出则被系统/输入法/显卡热键拦截;有输出则检查插件覆盖、json语法错误或硬编码限制。

Ctrl+鼠标左键拖拽没反应?先确认按键是否进了 Sublime
列编辑(即“列选择”或“多光标列选”)依赖 Ctrl+鼠标左键(Windows/Linux)或 Cmd+鼠标左键(macOS),但这个组合极易被系统或输入法劫持。按 Ctrl+` 打开控制台,输入 sublime.log_input(True) 回车,再按 Ctrl+鼠标左键 —— 如果控制台**完全无输出**,说明信号根本没进 Sublime:
• Windows 用户重点检查 NVIDIA 控制面板 / Intel Graphics Command Center 的「热键」设置
• macOS 用户去「系统设置 → 键盘 → 快捷键」中关闭「Spotlight」和「输入源切换」对 Cmd+Space 或 Cmd+Tab 类组合的占用
• 中文输入法(如搜狗、QQ拼音)默认拦截 Ctrl+Shift 切换,会连带影响 Ctrl+鼠标 的底层事件传递
列编辑快捷键被插件覆盖?查加载顺序和 context 条件
Sublime 的快捷键加载顺序是:Default.sublime-keymap → 插件自带的 Default.sublime-keymap → Preferences.sublime-keymap(User)。后加载者静默覆盖前一个,不报错也不提示。
打开 Preferences > Key Bindings,左右并排查看:
• 左侧 Default 中搜索 "ctrl+mouse" 或 "button1",确认原生列编辑绑定是否存在(通常为 {"keys": ["ctrl+mouse"], "command": "drag_select", "args": {"by": "columns"}})
• 右侧 User 和所有插件目录(Packages/插件名/Default.sublime-keymap)中全局搜索 "ctrl+mouse" 或 "button1"
• 常见劫持插件:Vintage(模拟 Vim 模式)、Origami(窗口管理)、SideBarEnhancements(侧边栏增强)—— 它们可能在自己的 Default 文件里重绑了鼠标行为
手动修复列编辑绑定时 JSON 写错就等于没写
Preferences.sublime-keymap 是纯 JSON 数组,不是 JS 对象,也不是配置文件。格式错误会导致整份配置静默失效:
• 所有键名和字符串值必须用英文双引号,例如 "keys" 不是 keys,"drag_select" 不是 drag_select
• 数组末尾不能多逗号:["ctrl+mouse"], 是错的,["ctrl+mouse"] 才对
• 不支持 // 注释;想临时禁用某条,直接删整行,或改成无效命令:"command": "not_a_real_command"
• 正确示例(Windows):
[{"keys": ["ctrl+mouse"], "command": "drag_select", "args": {"by": "columns"}}]
Esc 关不掉列选框?这不是快捷键问题,是内核硬编码行为
列编辑状态下按 Esc 无法退出?这不是 Key Bindings 配置能改的。Esc 关闭搜索框、命令面板、替换栏、列选 UI 等行为,是 Sublime 内核级硬编码逻辑,完全不走任何 .sublime-keymap 流程。
• 在 User.sublime-keymap 里加 {"keys": ["escape"], "command": "xxx"} 不仅无效,还会破坏原生功能(比如按 Esc 后列选框卡住不消失)
• 若 Esc 失效,先运行 subl --safe-mode:如果此时恢复,说明是插件劫持(Vintage 默认把 Esc 绑定为退出插入模式)
• Vintage 用户需进入 Preferences → Package Settings → Vintage → Settings,设 "exit_insert_mode_on_escape": false











