Atom新建文件默认为Plain text是设计行为,需修改config.cson中core.fileTypes映射(如'.rs': 'source.rust'),保存后必须重启Atom才生效。

新文件打开就是 Plain text,怎么让它自动识别语法
Atom 新建文件默认用 Plain text,不是 bug,是设计行为——它不猜后缀,也不靠插件“自动接管”。唯一生效的配置是修改 config.cson 里的 core.fileTypes。
- 路径必须是
~/.atom/config.cson(macOS/Linux)或%USERPROFILE%\.atom\config.cson(Windows) - 写法必须是键值对:
'.rs': 'source.rust',不是'rust': 'source.rust'或'source.rust': ['.rs'] - 扩展名全小写,数组形式只用于多后缀映射,如
'.vue': 'source.vue'单条就够了 - 改完保存,**必须重启 Atom** —— reload window(
Ctrl+Alt+R)不够,部分 language 包注册 scope 需完整启动
装了 language-xxx 插件,但 .xxx 文件还是黑白
常见原因是 scope 名没对上。Atom 不报错,只是静默跳过——你写的 fileTypes 映射、插件提供的 scopeName、Editor: Log Cursor Scope 输出的首行三者必须完全一致。
- 先打开一个已知能高亮的 .xxx 文件,执行
Ctrl+Shift+P→ 输入Editor: Log Cursor Scope,看第一行输出,例如source.ass - 确认插件确实提供了这个 scope:进
~/.atom/packages/language-ass/grammars/,检查.cson文件里scopeName: 'source.ass'是否存在且拼写无误 - 别用
text.xxx:它和source.xxx继承链不同,text类 scope 通常被主题忽略或降级渲染 - Windows 用户注意:路径分隔符不影响,但
config.cson中所有字符串必须用单引号包裹,避免 CSON 解析失败
为什么改了 grammar 的 patterns,高亮还是没变
Grammar 只负责打标签,不负责上色。patterns 写得再准,如果 styles.less 没匹配到对应作用域,就等于白干。
-
styles.less必须放在正确位置:~/.atom/styles.less(全局)或插件包内的styles/目录下(局部) - CSS 选择器要完整包含作用域链,比如 grammar 输出
source.ass entity.name.function.ass,就得写.syntax--source.syntax--ass .syntax--entity.syntax--name.syntax--function - 别在
patterns里写颜色:正则匹配后只能设name字段,如'name': 'entity.name.function.ass',颜色由样式表统一控制 - Tree-sitter 语法(如
language-rust-bundled)的作用域命名规则和 TextMate 不同,得查对应 grammar 文档,不能直接套用旧 pattern
想让 JSX 在 .js 文件里也高亮,但 language-javascript 不支持
原生 language-javascript 仅处理标准 JS,JSX 是独立语法层。强行启用会导致嵌套 scope 错乱,比如 div 标签被当成 HTML 而非 JS 表达式。
- 推荐方案:装
language-babel并禁用language-javascript(Settings → Packages → 搜索后者 → 点 Disable) - 替代方案:Atom 1.60+ 自带
language-javascript-jsx,启用后需在config.cson中强制绑定:'.js': 'source.js.jsx' - 验证是否生效:打开 .js 文件,右下角状态栏必须显示
JavaScript (JSX),不是JavaScript - 如果仍错乱,检查是否有其他插件(如
language-html)劫持了 JSX 内容——临时禁用它测试
语法解析器真正起效的地方,从来不在配置文件表面,而在 scopeName 和 fileTypes 之间那条细线;漏掉任一端,显色就断了。

















