sublimelinter 本身不检查代码,仅作调度器,必须配合 eslint、flake8 等 cli 工具才能工作;只装插件未装对应命令行工具会导致“linter not found”错误,且路径配置不当(如 windows 的 eslint.cmd 不在 path、macos/linux 的 nvm 路径动态变化)是常见原因。

Sublime 本身不查错,得靠 SublimeLinter 框架 + 外部 CLI 工具(如 eslint、flake8)配合才能实时标出错误。只装插件不装对应命令行工具,必然报 linter not found。
SublimeLinter 安装后为什么没反应?
常见错误现象:装完 SublimeLinter 和 SublimeLinter-eslint,打开 .js 文件却无任何波浪线或提示。
- 根本原因不是插件没装好,而是系统里压根没装
eslintCLI ——SublimeLinter只是调度器,不自带检查能力 - Windows 用户尤其容易卡在路径:npm 全局安装的
eslint.cmd默认不在系统PATH里,Sublime 找不到它 - macOS/Linux 用户若用
nvm管理 Node 版本,which eslint返回的路径可能随 shell 会话变化,Sublime 启动时读不到 - 验证方法:终端里直接运行
eslint --version;如果报 command not found,就得先解决 CLI 工具的可用性
如何让 Python/JS 文件分别按需实时检查?
不能全局设 "on_modified": true —— 对大型 JS 文件+ESLint 插件(比如带 eslint-plugin-react),每敲一个字都触发检查,UI 会明显卡顿。
- 推荐组合策略:在
Preferences → Package Settings → SublimeLinter → Settings中写: -
"lint_mode": ["on_load", "on_save"]作为兜底 - 再为不同语言单独配
selector和trigger: - 对 Python:
"selector": "source.python"+"on_modified": true(因为flake8极快) - 对 JavaScript:
"selector": "source.js, source.jsx, source.ts, source.tsx"+"on_save": true - 注意
delay参数:默认300(毫秒),可降到100提升响应感,但低于50容易引发 CPU 暴涨
项目级配置为什么总不生效?
最常踩的坑是文件名写错或层级混乱——SublimeLinter 不报错,只是静默 fallback 到用户设置或默认行为。
- 项目根目录下必须是
.sublimelinterrc(纯 JSON 格式,没有 .json 后缀),写成.sublimelinterrc.json就无效 -
disable字段必须嵌套在具体 linter 下,例如:"eslint": { "disable": true },而不是顶层"disable": true - 如果项目里同时有
.eslintrc.js和 Sublime 设置里的args: ["--config ./my.eslintrc"],后者会覆盖 JS 文件中extends的规则继承链 - 路径优先级:项目
.sublimelinterrc> 用户Settings> 插件默认值
真正难调的从来不是“能不能标出来”,而是“标得对不对”——比如 ESLint 报了某个 React Hook 规则错误,但你项目里其实用了自定义 Hook,这时候就得看 args 是否误覆盖了 rules,或者 env 有没有漏配 browser 或 node。











