确认冲突需先在sublime控制台运行sublime.log_input(true),若按疑似冲突键(如ctrl+shift+r)无任何输出,说明按键被录像软件等系统级工具截断;windows重点查obs/bandicam/snagit热键设置,macos注意quicktime及kap等全局热键。

屏幕录像软件(如 OBS、Bandicam、Camtasia、Snagit)常默认占用 Ctrl+Shift+R、Ctrl+Alt+R、F9、F10 等组合键,而这些恰好与 Sublime Text 的插件命令(如 reindent、toggle_side_bar)或用户自定义快捷键重叠——冲突不是“Sublime 坏了”,而是录像软件在系统层优先捕获了按键,Sublime 根本收不到。
怎么确认是屏幕录像软件截断了按键?
这是排查起点,跳过它所有修改都白忙活:
- 按
Ctrl+`打开 Sublime 控制台,输入sublime.log_input(True)回车 - 不关闭控制台,直接按你怀疑冲突的组合键(比如
Ctrl+Shift+R) - 如果控制台**完全没输出**(连
key evt: ctrl+shift+r都没有),说明按键在进 Sublime 前就被截断了——90% 是屏幕录像软件、系统快捷键或输入法干的 - Windows 用户重点检查:OBS 设置 → 「热键」页签、Bandicam 设置 → 「快捷键」、Snagit 的「Capture Preferences」→ 「Hotkeys」
- macOS 用户注意:QuickTime Player 的
Cmd+Ctrl+R、或第三方工具(如 Kap、ScreenFlow)是否启用了全局录制热键
如何绕过录像软件的热键拦截?
不建议关掉录像软件的热键(影响工作流),更稳的解法是让 Sublime 用一个“录像软件没注册”的组合:
- 打开
Preferences → Key Bindings,编辑右侧User文件 - 找原绑定(比如 Default 中
"keys": ["ctrl+shift+r"]对应"command": "reindent") - 在 User 中覆盖为冷门但安全的组合,例如:
[{"keys": ["ctrl+alt+shift+r"], "command": "reindent"}] - 避免用
F9–F12:这类功能键极易被录像软件、显卡驱动(NVIDIA/Intel)、甚至 macOS 的「勿扰模式」劫持 - 推荐组合:含
alt+shift+ 字母(如ctrl+alt+shift+f),这类三键+字母组合被系统级软件占用的概率极低
为什么改了 User.sublime-keymap 还是没用?
常见于录像软件 + 插件共存场景,本质是加载顺序和 JSON 格式双重失效:
- Sublime 加载顺序是:
Default→ 插件自带的Default.sublime-keymap→User;但某些插件(如Vintage、Origami)会在启动时动态注入绑定,它们的规则可能比User更晚生效 -
User.sublime-keymap写错一个字符就静默失效:必须用英文双引号,数组末尾不能有多余逗号,不支持//注释 - 验证方法:保存后立刻在控制台输
sublime.log_commands(True),再按新快捷键——如果控制台输出command: reindent,说明绑定成功;如果没输出,就是 JSON 错了或被插件覆盖 - 临时验证:命令行运行
subl --safe-mode,此时禁用所有插件。如果这时新快捷键有效,说明是某个插件干扰,而非录像软件本身
Esc、F5 这类键为什么改不了?
它们压根不走 .sublime-keymap 流程:
-
escape关闭命令面板、搜索框、替换栏,是 Sublime 内核硬编码行为,任何{"keys": ["escape"], ...}都无效,还可能破坏原生逻辑 -
F5触发构建系统(Build)也是内核级绑定,不响应自定义;若录像软件占了F5,Sublime 就收不到,只能去录像软件设置里关掉它 - macOS 下特别注意:
F10默认是「显示桌面」,F11是「显示全部窗口」,这些系统快捷键在「系统设置 → 键盘 → 快捷键 → Mission Control」里,必须手动关掉才能释放给 Sublime
最易被忽略的是:录像软件热键设置里常有「仅当焦点在主窗口时生效」和「全局生效」两个选项,默认往往是后者。哪怕 Sublime 是当前激活窗口,只要录像软件开了全局热键,它就先拿到按键——这个细节在插件文档里几乎从不提,但恰恰是冲突根源。











