Atom新文件默认为text.plain是设计使然,非bug;需在config.cson中配置core.fileTypes映射空字符串或扩展名到准确grammar scope(如'.py': 'source.python'),并确保缩进、引号格式正确。

为什么新文件一打开就是 text.plain?
Atom 不会自动猜语言,新建未保存文件默认永远是 text.plain,高亮、缩进、补全全失效。这不是 bug,是设计逻辑——它只响应你明确定义的规则。
必须改 ~/.atom/config.cson(Windows 是 %USERPROFILE%\.atom\config.cson),在 core: 下加 fileTypes 映射:
-
''(空字符串)代表无后缀的新建文件,比如直接 Ctrl+N;映射成'source.python'就默认用 Python 语法 - 更稳妥的做法是按扩展名绑定:
'.py': 'source.python'、'.tsx': 'source.tsx'、'.vue': 'source.vue' - scope 名必须准确:打开一个已高亮的文件 → Ctrl+Shift+P → 执行
Editor: Log Cursor Scope→ 看第一行输出,比如source.tsx,不是source.typescript或text.vue - CSON 格式极敏感:缩进必须用两个空格,引号不能漏,多一个空格整段配置就静默失效
高亮全灰?先确认 Atom 真识别了文件类型
“没颜色” ≠ 插件没装,而是 Atom 没把当前文件当目标语言解析。最直接验证方式:光标停在任意标签或函数名上(如 <div> 或 <code>console.log),Ctrl+Shift+P 输入并执行 Editor: Log Cursor Scope,看 DevTools 控制台输出的最末一级 scope:
- 要是
source.xml、source.nginx、source.python,说明 grammar 已生效 - 若只看到
text.plain、text.html、source.ass,那高亮永远起不来 - 常见干扰项:
grammar-selector插件开启“强制语法”会覆盖自动检测;config.cson里有"*.conf": "source.ini"这类全局映射,会把所有 .conf 当 INI 处理
language-xxx 插件装了却没反应?检查三处硬性条件
插件启用只是前提,不是充分条件。以下任一不满足,高亮就静默失败:
-
language-xml必须在 Settings → Packages 里显示为 Enabled(蓝色),不是灰色禁用状态 - 确保没在
config.cson中误删或覆盖 language-xxx 的默认后缀绑定,比如删掉language-nginx自带的"*.conf": "source.nginx"规则 - 文件必须已保存为对应后缀(如
server.conf、app.py);新建未保存文件即使绑了fileTypes,也要先保存才能触发 grammar 加载
颜色太淡、括号看不见、JSX 标签不亮?问题不在语法层
作用域对了(source.jsx)、插件启用了、后缀也正确,但还是“看着像没高亮”,大概率是主题压制:
- 括号配对由
bracket-matcher提供,但它用的是独立选择器.bracket-matcher .region,深色主题常设成rgba(255,255,255,0.05),肉眼不可见 - JSX tag、decorator、TS 类型等新语法元素,老主题(如
atom-one-light)压根没定义对应作用域样式,得换atom-material-syntax或手动在~/.atom/styles.less补全选择器,例如:.syntax--source.syntax--jsx .syntax--entity.syntax--name.syntax--tag - 别用
!important覆盖泛化类如.syntax--string,要写完整作用域链;也别碰.syntax--punctuation.bracket,它和括号匹配无关
真正容易被忽略的是:语法高亮依赖 grammar 输出的作用域 + 主题对这些作用域的 CSS 定义,缺一不可。哪怕 scope 链完全正确,只要主题没写 .syntax--source.syntax--xml .syntax--comment 这样的规则,注释就只能是默认灰。

















