sublime text 实时语法检查需同时满足三条件:正确安装 sublimelinter 框架与 sublimelinter-eslint 插件、终端可运行 eslint 命令、lint_mode 设为 background 并配 delay 防卡顿,缺一不可。

Sublime Text 本身不报语法错误,装了 SublimeLinter 也不自动提醒——必须同时满足三个硬性条件:装对框架+语言插件+系统级 CLI 工具,缺一不可。
SublimeLinter 和 SublimeLinter-xxx 必须分开装
很多人只装 SublimeLinter 就以为完事了,结果 .js 或 .py 文件完全没反应。这是因为:
-
SublimeLinter只是调度器,不带任何语言检查逻辑 - 真正干活的是
SublimeLinter-eslint、SublimeLinter-flake8这类子插件,必须单独安装 - 命令面板里搜 “Install Package” → 分别输入并安装这两个名字,不能漏掉
-eslint后缀 - 装完后打开一个 .js 文件,右下角状态栏必须显示
JavaScript (ESLint),不是Plain Text或JavaScript(少括号说明没接入)
eslint / flake8 / php 命令必须在终端能直接运行
插件不是调用项目里的 node_modules/.bin/eslint,而是优先查系统 PATH。常见失败现象:
- 保存文件后控制台(
Ctrl+`)报eslint: cannot resolve command或spawn eslint ENOENT - macOS 用 nvm、Windows 用 WSL 或 Node 版本管理器时,Sublime 继承的是系统环境变量,不是 shell 当前 PATH
- 解决办法:终端执行
which eslint(macOS/Linux)或where eslint(Windows),把输出路径填进 SublimeLinter 设置里的"executable" - 示例(macOS):
{ "linters": { "eslint": { "executable": ["/Users/you/.nvm/versions/node/v18.17.0/bin/eslint"] } } }
lint_mode 设为 background 才“接近实时”,但得配 delay 防卡顿
默认 lint_mode 是 background,但很多用户实际设成了 load_save 或根本没改,导致只在保存时检查——这不是“实时”。
- 要编辑中就提示,必须确认设置里是
"lint_mode": "background" - 但纯 background 模式下,每敲一个字都触发
eslint,大型项目会明显卡顿 - 务必加
"delay": 0.5,让修改后等半秒再检查,避免高频子进程堆积 - 如果项目用了
typescript-eslint或规则特别多,建议改回"lint_mode": ["on_save"],更稳
配置文件名大小写和位置决定 ESLint 能不能读到规则
ESLint 不报 no-unused-vars 或 quotes 类警告?大概率是配置文件没被识别。
- 只写
console.log()会报语法错,但var a = 1;不报未使用变量——因为没加载规则 - ESLint v8.50+ 之后支持
eslint.config.js,但 SublimeLinter-eslint 默认不认,需手动指定:"args": ["--config", "${project}/eslint.config.js"] - 旧版仍用
.eslintrc.js或.eslintrc.json,注意文件名必须全小写,.ESLINTRC.JS会被忽略 - 配置文件必须放在项目根目录,或其任意父目录;SublimeLinter-eslint 向上查找,不会向下进
src/
最常被跳过的环节是:改完设置没重启 Sublime,或文件类型没手动设成对应语法(View → Syntax),导致 linter 根本不启动。验证是否真工作,别看小图标,直接打开一个已知有错的文件,按 Ctrl+Shift+P 输入 SublimeLinter: Show All Errors,空白就是链路断了。











