keymap.cson是唯一可靠快捷键配置文件,必须用单引号、严格缩进、正确语法;绑定需同时指定选择器、按键(小写短横线)、命令;不同语法需用data-grammar限定;script插件命令为'script:run'。

keymap.cson 是唯一能真正生效的配置位置
图形界面里点「Add Keybinding」生成的规则不可靠,不支持选择器条件、平台限定,也压根不会覆盖插件冲突。所有稳定、可复现、能调试的快捷键,必须写进 ~/.atom/keymap.cson(macOS/Linux)或 %USERPROFILE%\.atom\keymap.cson(Windows)。用 Atom 自带的 Application: Open Your Keymap 命令打开最安全,别手输路径找错文件。
改完保存后热生效——但前提是语法正确。CSON 要求缩进严格、逗号不能多也不能少、键名必须用单引号。比如 'ctrl-s' 合法,"ctrl+s" 或 ctrl-s(没引号)会静默失效。右下角出现红色感叹号,基本就是语法错了。
三要素缺一不可:选择器、按键、命令
一个绑定要起作用,必须同时说清三件事:
- 在哪儿按?比如
'atom-text-editor'(仅编辑区)、'atom-workspace'(整个窗口)、'*.source.js'(仅 JS 文件) - 按什么?格式统一用小写短横线:
'ctrl-alt-r',不是Ctrl+Alt+R或CTRL-ALT-R - 做什么?命令名必须完整准确:
'script:run',拼成'script:runn'或漏掉冒号就完全不触发
常见陷阱:把多个 'atom-text-editor' 块拆开写,后写的会整个覆盖前面的;想让 Ctrl+S 格式化 JS 但没先用 'unset!' 解绑原 'core:save',结果两个命令一起执行。
不同语言/场景需用 grammar 选择器区分
autocomplete-plus:activate 在 .py 文件里不响应,大概率不是插件没装,而是 keymap 没匹配到当前语法 scope。Atom 编辑器的 grammar(如 source.python、source.js)由右下角状态栏显示,和文件后缀无关。
正确写法是用 data-grammar 属性限定:
'atom-text-editor[data-grammar~="source.js"]': 'ctrl-alt-space': 'autocomplete-plus:activate''atom-text-editor[data-grammar~="source.python"]': 'alt-/': 'autocomplete-plus:activate'
查当前 scope 的最快方式:光标放在目标文件里,按 ctrl+.(Windows/Linux)或 cmd+.(macOS)调出 Keybinding Resolver,左下角实时显示匹配的选择器链。
script 插件运行脚本的快捷键必须手动配
atom-runner 已归档,绑定 ctrl-r 也毫无反应。唯一能稳定执行 Python/JS/Shell 的是 script 插件,默认快捷键 ctrl-i(Windows/Linux)或 cmd-i(macOS),但这个绑定本身也是靠 keymap.cson 实现的。
自定义时注意:
- 命令名是
'script:run',不是'script:execute'或其他变体 - 推荐绑定在
'atom-text-editor'下,避免在设置页或命令面板误触 - 如果
ctrl-i被输入法或其他软件占用(尤其 Windows 的 Ctrl+Space 类冲突),换绑为'ctrl-alt-r'更稳妥 - 确保终端启动 Atom(而非桌面图标),否则
script可能找不到python3或node环境变量
真正容易被忽略的是:快捷键是否生效,取决于当前焦点所在的 scope 层级。你在编辑器里配了 ctrl-k ctrl-f,但在命令面板里按它却触发查找,说明那个面板有自己的 keymap 上下文,得单独为 .command-palette 这类选择器再写一条规则。

















