新文件默认语言为 Plain text 是 Atom 的设计而非 bug,因其拒绝自动猜测;需在 config.cson 中配置 core.fileTypes 映射扩展名与准确 grammar scope(如 '.py': 'source.python'),保存后新开文件即生效。

新文件默认语言为什么不是你想要的?
Atom 启动时新建的 untitled 文件,默认用的是 Plain text 语法——它不识别任何语言特性,所以没有高亮、没有缩进、没有自动补全。这不是 bug,是 Atom 的设计:它拒绝“猜”,除非你明确告诉它该用什么。
常见错误现象:写 Python 却要每次手动点状态栏选 Python;新建 .ts 文件却高亮成 JavaScript;甚至改了配置重启后依然无效——大概率是因为规则没写进 config.cson,而是误加到了 styles.less 或插件设置里。
- 必须修改
~/.atom/config.cson(macOS/Linux)或%USERPROFILE%\.atom\config.cson(Windows) - 不能靠安装语言包“自动生效”,语言包只提供高亮规则,不接管新建文件逻辑
-
core.fileTypes是唯一正解,其他方式(比如改grammar或插件设置)基本无效
怎么让新建文件直接用 Python/TypeScript/Twig 等语法?
打开命令面板:Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows/Linux),输入 Open Your Config 回车,编辑 config.cson,在 core: 下添加 fileTypes: 映射。
例如,让所有新文件默认用 Python:
core:
fileTypes:
'': 'source.python'
或者更稳妥地,只对特定扩展名生效(推荐):
core:
fileTypes:
'.py': 'source.python'
'.ts': 'source.ts'
'.twig': 'text.html.twig'
-
''(空字符串)代表无扩展名的新建文件,source.python是language-python插件注册的 grammar scope 名,不是随便写的 - scope 名必须准确,查法:打开一个已正确高亮的文件 →
Cmd+Alt+Shift+P(macOS)或Ctrl+Shift+P→ 输入Editor: Log Cursor Scope,看第一行输出 - 改完保存,**不用重启 Atom**,但已有 untitled 标签页不会变,新开一个才生效
为什么 .vue / .tsx 文件还是不亮?插件装了也不行
很多语言插件(比如 language-vue-component 或 language-typescript-react)注册的 scope 名和官方命名不一致,fileTypes 映射错一个字母就失效。
典型问题:
-
.vue文件应映射到source.vue(language-vue-component提供),不是text.html.vue -
.tsx应映射到source.tsx(language-typescript-react提供),不是source.typescript - 如果插件未启用,
fileTypes映射会静默失败,状态栏仍显示Plain text
验证方法:先用已有 .vue 文件测试是否能高亮;若不能,说明插件根本没生效,别急着调 config.cson。
自定义语法映射的兼容性与边界
fileTypes 只影响新建文件和磁盘上无关联 extension 的文件(比如直接拖一个没后缀的脚本进 Atom)。它不覆盖已有文件的语法判断逻辑——也就是说,你改了 '.js': 'source.ts',Atom 不会真把它当 TypeScript 解析,只是强行套上 TS 主题色,类型检查、跳转等功能全失效。
- 不要用
fileTypes“伪装”语言,只用于真正匹配的场景(如.env→source.shell) - 多个扩展名映射同一 scope 没问题,比如
'.jsx': 'source.js.jsx'和'.js': 'source.js' - Windows 用户注意路径分隔符,
config.cson中一律用单引号,不要用双引号或反斜杠
最常被忽略的一点:Atom 会缓存 grammar 加载结果。如果改了 fileTypes 没反应,先试 Window: Reload(Cmd+Alt+R),而不是关掉重开。

















