keymap.cson是唯一可靠、可复现的快捷键配置方式,必须手动编辑该文件,使用cson格式,每条绑定需包含选择器、按键和命令三部分,并通过ctrl+.验证生效情况。

keymap.cson 是唯一可靠、可复现的快捷键配置方式
图形界面里点「Add Keybinding」生成的规则不透明、不支持选择器条件、无法处理平台限定或优先级,用几次就会被插件覆盖或静默失效。必须直接编辑 keymap.cson 文件。
路径是:~/.atom/keymap.cson(macOS/Linux)或 %USERPROFILE%\.atom\keymap.cson(Windows)。它用 CSON 格式(不是 JSON),允许注释和末尾逗号,但语法错误会导致整份文件失效。
- 每条绑定必须含三部分:「选择器」+「按键」+「命令」,缺一不可
- 选择器决定生效范围:
atom-text-editor表示所有编辑区,.source.js atom-text-editor仅限 JS 文件,.platform-darwin可限定 macOS - 按键写法必须小写、短横线连接:
cmd-shift-p✅,Cmd+Shift+P❌,Ctrl+Up❌ - 命令名必须完整带命名空间:
core:open-command-palette✅,open-command-palette❌,拼错就静默失败
为什么改了快捷键没反应?先查冲突源
Atom 快捷键匹配顺序是:系统 → 插件 → core → 用户 keymap.cson。你写的规则只有没被更高优先级拦截时才生效。
- 按
Ctrl+.(Win/Linux)或Cmd+.(macOS)打开实时解析器,按目标组合键,看底栏显示哪条规则命中、来自哪个Source - 在 Settings → Keybindings 搜索框输入
ctrl-/,检查是否有多条同键绑定;重点看Source列——如果是nuclide或docblockr,说明插件抢了 - macOS 用户务必检查「系统设置 → 键盘 → 快捷键 → 输入源」,
Cmd+Space或Cmd+/这类系统级绑定 Atom 根本收不到事件 - 中文输入法(如搜狗、百度)常劫持
Cmd+Shift+P切换中英文,导致命令面板打不开——换输入法或禁用该热键
覆盖插件快捷键要精准,不能只靠 atom-text-editor
比如想把 ctrl-s 绑定到 prettier:format,写成 'atom-text-editor': 'ctrl-s': 'prettier:format' 很容易被插件更精确的选择器压住(例如 '.source.js atom-text-editor')。
- 用更具体的选择器替代宽泛匹配:
'.source.js atom-text-editor'比'atom-text-editor'优先级高 - 加
!important强制提升优先级(仅限 CSON):'atom-text-editor': 'ctrl-s !important': 'prettier:format' - 避免全局覆盖核心行为:不要把
ctrl-s改成格式化后完全丢掉保存功能,建议保留core:save并另配一个专属格式化键,比如ctrl-alt-s - 装了
vim-mode-plus或emmet后,ctrl-shift-up/down移动整行可能失效——它们会拦截这些键,需在keymap.cson中显式覆盖
真正省时间的不是自定义键,而是练熟命令面板 + 解析器
Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS)比死记所有快捷键更可持续。插件更新、系统差异、自定义配置都会让硬记的键位失效,但命令名稳定,模糊匹配足够聪明。
- 输
save all、toggle tree、stage hunk前几个字母就能命中 -
Ctrl+.不只是查冲突,还能帮你发现哪些命令根本没默认快捷键(比如emmet:expand-abbreviation),右键选 “Key Binding Resolver” 就能手动绑定 - 某些操作(如
window:toggle-full-screen)输full就能唤出,不用纠结大小写或空格 - 复制/移动/删除整行必须用专用快捷键:
ctrl-shift-d、ctrl-shift-up/down、ctrl-shift-k——混用ctrl-c或ctrl-k会丢换行符或只删光标右侧,极易引入语法错误
最易被忽略的是:所有自定义都依赖选择器精度和冲突排查闭环。没开 Ctrl+. 验证过的行为,基本等于没配。











