Sublime Text不支持直接导入Atom的keymap.cson文件,因其CSON格式与Sublime要求的JSON格式不兼容;需手动将Atom快捷键语义还原为Sublime对应command,如ctrl+shift+d→"duplicate_line"、alt-up→"swap_line_up",并注意platform键名用super、添加context限定及按Default→插件→User顺序排查覆盖。

Sublime Text 不支持直接导入 Atom 的 keymap 文件
Atom 的 keymap.cson 是 CSON 格式(CoffeeScript Object Notation),而 Sublime Text 只认 JSON 格式的 User.sublime-keymap。二者语法不兼容,强行复制粘贴会因语法错误导致整个用户键位文件静默失效——你改了但没反应,连报错都不会有。
真正可行的路径是「语义还原」:不是导入文件,而是把 Atom 常用操作(比如 ctrl+shift+d 复制整行、alt-up/down 行移动)手动映射成 Sublime 对应命令。
Atom 经典快捷键在 Sublime 中对应哪些 command?
Sublime 没有原生 duplicate_line 或 move_line 这类直观命令名,得靠实际测试或查文档确认。常见映射关系如下:
-
ctrl+shift+d(Atom:复制当前行)→"command": "duplicate_line" -
alt-up/alt-down(Atom:上下移动当前行)→"command": "swap_line_up"/"command": "swap_line_down" -
ctrl-shift-k(Atom:删除当前行)→"command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} -
ctrl-/(Atom:切换注释)→"command": "toggle_comment"(Sublime 默认已绑定,无需重写)
注意:swap_line_up 等命令在 Sublime 4+ 才原生支持;旧版本需用 macro 或插件补足。
如何避免 context 冲突和平台键名写错
Sublime 的快捷键生效受 context 限制,比如 ctrl+shift+p 只在编辑器焦点时才触发命令面板。直接照搬 Atom 键位可能因 context 缺失而失效。另外,跨平台键名必须用 super 而非 ctrl:
- 错误写法:
"keys": ["ctrl+shift+f"]→ macOS 下ctrl是 Control 键,不是 Command,根本不会触发 - 正确写法:
"keys": ["super+shift+f"]→ Sublime 自动将super映射为 macOS 的 Cmd、Windows/Linux 的 Ctrl - 若需限定仅在编辑器中生效,加
"context": [{"key": "setting.is_widget", "operator": "equal", "operand": false}]
别漏掉 context,否则快捷键可能在搜索框、侧边栏等非编辑区域意外触发,甚至覆盖系统行为。
验证快捷键是否真生效的三步法
改完 User.sublime-keymap 后别急着试功能,先做这三件事:
- 按
Ctrl+`打开控制台,输入sublime.log_input(True),再按你的新组合键——如果控制台没输出,说明按键根本没进 Sublime(被输入法、NVIDIA 控制面板或 macOS 全局热键截了) - 用
Ctrl+Shift+P输入命令名(如duplicate_line),看能否手动触发——排除命令本身不可用 - 打开
Preferences → Key Bindings,左右对比:左侧 Default 文件里有没有同组keys已被其他插件(如 Vintage、Emmet)抢先绑定?后加载的规则会覆盖前面的
最常被忽略的是:Sublime 的键位加载顺序是 Default → 插件 Default → User,你以为自己写了,其实早被某个插件的 Default.sublime-keymap 覆盖掉了。


















