Atom新建文件默认Plain text是设计而非缺陷,因它拒绝自动推断语言;必须通过core.fileTypes精确配置scope(如'': 'source.python')并启用对应language插件才生效。

新建文件默认是 Plain text,不是 Atom 坏了,是它坚持“不猜语言”——你必须明确告诉它该用什么语法,否则永远灰扑扑。
为什么新文件总是 Plain text?
Atom 启动后点 New File(或 Cmd+N/Ctrl+N)生成的 untitled 文件,扩展名为空,没有上下文可推断语言。它不会自动查内容、不会看项目配置、也不会读你心里想的是 Python 还是 YAML —— 这是设计,不是缺陷。
常见错误现象:
– 新建一个空文件写 Python,状态栏显示 Plain text,没缩进、没高亮、没补全
– 改了 config.cson 但新开文件还是不对,大概率是因为改到了 styles.less 或插件设置页
– 安装了 language-python 却没效果:语言包只提供 grammar 规则,不接管新建逻辑
必须改 core.fileTypes,别试别的
core.fileTypes 是唯一生效路径,其他方式(比如在 grammar-selector 里设默认、在插件里勾选“auto-detect”)基本无效。
-
''(空字符串)代表无扩展名的新建文件,映射到source.python就能让所有新文件默认用 Python 语法 - 更稳妥的做法是按扩展名映射:
'.py': 'source.python'、'.yaml': 'source.yaml'、'.vue': 'source.vue' - scope 名必须准确:打开一个已正确高亮的
.py文件 →Cmd+Alt+Shift+P→ 输入Editor: Log Cursor Scope→ 看第一行输出(如source.python),不能写成python或text.python - 路径是
~/.atom/config.cson(macOS/Linux)或%USERPROFILE%\.atom\config.cson(Windows),别改错文件
改完不重启,但已有标签页不会变
保存 config.cson 后,新开的 untitled 标签页立即生效;但已打开的 untitled 标签页仍保持 Plain text,除非你手动点击右下角状态栏切换语法,或关掉重开。
注意几个静默失败点:
– language-vue-component 提供的 scope 是 source.vue,不是 text.html.vue
– language-typescript-react 对应 .tsx 的是 source.tsx,不是 source.typescript
– 如果对应 language 插件被禁用(Settings → Packages 里是灰色),fileTypes 映射会完全失效,状态栏仍显示 Plain text
XML/.conf/.twig 等冷门格式怎么加?
原理一样,但要确认插件注册的 scope 名是否匹配:
-
language-nginx注册的是source.nginx,所以配'.conf': 'source.nginx'或'': 'source.nginx' -
language-xml默认识别.xml后缀,scope 是source.xml;若手动映射'*.xml': 'text.html',会直接压制它 -
language-twig的 scope 是text.html.twig(不是source.twig),这是历史命名惯性,错一个字母就不亮 - 所有映射都写在
core.fileTypes下,缩进必须对齐,YAML 格式敏感:冒号后必须有空格
最易被忽略的是:scope 名和插件启用状态必须同时正确——缺一不可。哪怕 config.cson 写得完美,只要 language-xml 在 Settings 里是 Disabled,XML 文件依然全灰。











