keymap.cson文件位于~/.atom/keymap.cson(macOS/Linux)或%USERPROFILE%\.atom\keymap.cson(Windows),需通过Atom菜单Keymap…打开编辑;不生效主因是CSON语法错误、未重载窗口、误改其他文件或快捷键三要素(选择器、按键、命令)缺失/错误。

keymap.cson 文件在哪,改了为什么不生效
直接改 keymap.cson 是唯一可靠方式,图形界面 Settings > Keybindings 只能查冲突或禁用,不能新增/精细控制。文件路径固定:~/.atom/keymap.cson(macOS/Linux)或 %USERPROFILE%\.atom\keymap.cson(Windows)。用 Atom 菜单里的 Atom → Keymap… 打开最安全,避免手输路径出错。
不生效的常见原因:
- 语法错误:CSON 对缩进、逗号、引号极其敏感;多一个空格、少一个单引号都会静默失败,右下角会弹红点提示
- 保存失败:Atom 有时会锁住文件,手动保存后没真正写入磁盘;建议改完立刻按
Cmd+Alt+R(macOS)或Ctrl+Alt+R(Win/Linux)重载窗口 - 误改其他文件:
config.cson或init.coffee里写快捷键完全无效
快捷键绑定必须写全三要素
一个有效绑定不是「按什么→做什么」,而是「在哪儿按、按什么、做什么」——缺一不可。漏掉选择器(selector),就可能全局乱触发,或压根不响应。
关键三要素示例:
'atom-text-editor': 'ctrl-shift-k': 'editor:delete-line'
-
atom-text-editor:选择器,表示“只在编辑器文本区域生效” -
ctrl-shift-k:按键写法,统一用短横线(ctrl-shift-k),不用Ctrl+Shift+K或大小写混写 -
editor:delete-line:命令名,必须完整准确,拼错、少冒号、多空格都会静默失败
别把多个 atom-text-editor 块拆开写——后写的会整个覆盖前面同名块。所有编辑器相关绑定,集中写在一个块里更稳妥。
怎么让 Ctrl+S 只在 JS 文件里格式化,其他语言照常保存
不能只加一条新绑定,否则 core:save 和 prettier:format 会同时执行。得先解除默认行为,再按语言 scope 精准重绑。
操作步骤:
- 先全局禁用原绑定:
'*': 'ctrl-s': 'unset!'
- 再限定范围绑定:
'.source.js': 'ctrl-s': 'prettier:format' '.source.ts': 'ctrl-s': 'prettier:format' '.source.css': 'ctrl-s': 'prettier:format'
- 注意:
.source.js这类 scope 名必须和当前文件 grammar 一致;不确定时,按Cmd+Shift+P→ 输入Developer: Toggle Dev Tools→ 控制台执行atom.workspace.getActiveTextEditor().getGrammar().scopeName查看真实值
某些插件(如 prettier-atom)还要求开启「Format on Save」选项,否则 prettier:format 可能无反应。
为什么快捷键在命令面板/设置页/树视图里不工作
Atom 的快捷键有严格作用域隔离。你在 atom-text-editor 下写的绑定,在 .command-palette 或 .settings-view 里根本不会触发——它们属于不同上下文,各自有独立 keymap。
排查方法:
- 打开开发者工具(
Window: Toggle Dev Tools),运行atom.workspace.getActivePaneItem()看当前焦点组件类型 - 在命令面板里按
Cmd+.(macOS)或Ctrl+.(Win/Linux),打开快捷键解析器,实时看按下组合键时匹配到了哪个 selector - 想让快捷键在树视图生效?得用类似
.tree-view或.tree-view .file这样的选择器,而不是泛泛的*
最容易被忽略的一点:很多用户以为「写到 * 就是全局」,其实 * 只覆盖部分通用上下文,对命令面板、设置页、终端等专用视图完全无效——这些地方必须单独写 selector,且命令名也可能不同(比如 core:cancel 在命令面板里才是关闭动作)。

















