必须先装linter(steelbrain作者),再装语言provider(如linter-eslint),最后装linter-ui-default;缺任一层均导致零提示、无波浪线、命令面板搜不到Linter: Toggle,因linter是Atom 1.24+强制前置框架,provider依赖其注册,UI层负责渲染。

必须先装 linter(作者 steelbrain),再装对应语言的 provider(如 linter-eslint、linter-flake8),最后手动装 linter-ui-default,三者缺一不可;只装其中一个,编辑器会“干净得可疑”——没报错、没波浪线、命令面板搜不到 Linter: Toggle。
为什么装了 linter 却完全没反应?
Atom 1.24+ 版本起,linter 是硬性前置依赖。它不分析代码,只提供统一接口和生命周期钩子。所有语言插件(如 linter-eslint)都靠它注册进编辑器。没装它,provider 就静默失败:
- 设置页里找不到
linter-eslint的 Settings 按钮 - 命令面板(
Cmd+Shift+P/Ctrl+Shift+P)搜不到Linter: Toggle或Linter: Lint - 保存文件后零反馈,连
if (x = 1)这种明显错误都不标红
解决方式很直接:
- 打开
Settings → Install,搜linter,确认作者是steelbrain,点 Install - 安装完必须执行
Window: Reload(Cmd+Alt+R/Ctrl+Alt+R),否则 provider 加载不进生命周期 - 再单独搜装语言插件,比如 JavaScript 用
linter-eslint,Python 用linter-flake8,别选作者不明的同名包
如何让不同语言各自生效?
每种语言都需要三样东西:核心框架(linter)、语言 provider(如 linter-eslint)、UI 渲染器(linter-ui-default)。但 provider 本身不带检查能力,还得配好对应运行时和配置文件:
-
JavaScript/TypeScript:装
linter-eslint后,项目根目录需有.eslintrc.js或package.json里的eslintConfig字段;没配置文件,它就彻底沉默,不是报错,是跳过 -
Python:推荐
linter-flake8(非linter-pycodestyle),并确保系统能运行flake8 --version;它默认忽略__pycache__和.git,不用额外排除 -
Vue 单文件组件:必须同时装
eslint-plugin-vue和eslint-plugin-html,并在.eslintrc.js中加overrides显式指定processor: "vue/vue",否则<script></script>块被当 HTML 字符串解析,规则压根不触发 -
Java:用
linter-processing-java前,先确认javac --version可用;Atom GUI 启动时可能读不到 JDK 路径,建议从终端运行atom --new-window .启动
为什么波浪线有了但悬停无提示、点不动?
90% 是语法识别或作用域过滤问题,不是 Linter 本身坏了:
- 看编辑器右下角:如果是
Plain Text或Auto,说明 grammar 没匹配上,手动点击切换为JavaScript、Python等 - 进
linter设置页,检查是否勾选了Only lint files matching these scopes;若已勾选,删空内容,或明确填入source.js、source.python(注意不是text.html.basic这类) -
linter-ui-default必须启用:去Packages → linter-ui-default → Enable;禁用状态不会报错,只是错误全不渲染 - 主题样式可能覆盖 gutter 图标(比如极简主题设了透明图标),可临时切回
one-dark-ui+one-dark-syntax排查
最容易被忽略的是环境路径继承问题:Mac 用户用 GUI 启动 Atom 时,PATH 往往不包含 nvm/yarn 的 bin 目录,导致 eslint 或 flake8 找不到;改用终端执行 atom --new-window . 启动,才能继承 shell 环境。

















