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

Sublime Text 本身不带任何 Linter 功能,所有代码规范校验都依赖 SublimeLinter 框架 + 对应语言的专用插件组合。装错、漏装、路径配错,都会导致“看起来装了,但完全没反应”。
SublimeLinter 支持哪些语言插件
不是所有叫 “xxx-linter” 的插件都兼容当前 SublimeLinter(v4+),必须认准官方维护的、以 SublimeLinter- 开头的插件名:
-
SublimeLinter-flake8:Python(推荐,轻量且覆盖 PEP8/pyflakes/mccabe) -
SublimeLinter-pylint:Python(更重,适合强类型/大项目) -
SublimeLinter-eslint:JavaScript/JSX/TypeScript(必须配@typescript-eslint/parser才能正确检查 .ts) -
SublimeLinter-stylelint:CSS/SCSS/LESS(需本地安装stylelint,支持.stylelintrc.js) -
SublimeLinter-rubocop:Ruby(依赖全局或 bundle install 的 rubocop) -
SublimeLinter-phpcs:PHP(需phpcs命令可用,支持 PSR-12 等标准) -
SublimeLinter-shellcheck:Shell 脚本(shellcheck必须在 PATH 或显式指定路径)
注意:SublimeLinter-jshint 已停止维护;ESLint-Formatter 或 SublimeLinter-Eslint(大小写错误)这类名字都不对,不会注册为有效 linter。
为什么装了插件却看不到报错
90% 的“没反应”不是插件问题,而是环境链断在以下任一环节:
- 当前文件右下角显示的是
Plain Text或JSON,不是Python/JavaScript (Babel)/SCSS—— linter 不会触发 -
SublimeLinter: Toggle Linting没启用(菜单Tools → SublimeLinter → Toggle Linter) - 控制台(
Ctrl+`)里出现WARNING: Couldn't find eslint executable或No lint results—— 说明executable路径无效或命令根本不可执行 - 终端能跑
eslint --version,但 Sublime 启动方式是双击图标(macOS/Linux 下 PATH 未继承);应改用终端运行subl .打开项目 - 项目是 monorepo(如
packages/foo/src/index.js),但.eslintrc.js放在packages/foo/下,SublimeLinter 默认只向上找一级,需手动加"chdir": "${project_path}"
如何配置 executable 路径才真正生效
executable 是最常配错的字段,它不是“随便填个能运行的命令就行”,而要严格匹配 SublimeLinter 的查找逻辑:
- 值必须是数组格式:
"executable": ["./node_modules/.bin/eslint"],不能是字符串"./node_modules/.bin/eslint" - 路径以
./开头表示相对于当前打开的文件所在项目根目录(即Project → Add Folder to Project的那个目录) - Windows 用户不要写
eslint.cmd,SublimeLinter-eslint会自动补后缀;填["./node_modules/.bin/eslint"]即可 - 如果用
yarn或pnpm,node_modules/.bin可能不存在,此时应设为["yarn", "eslint"]或["pnpm", "exec", "eslint"] - 全局安装的工具(如
flake8)需确认 PATH 被 Sublime 正确读取;macOS 上常见断点是 shell 配置文件(.zshrc)里export PATH没被 GUI 应用加载
lint_mode 设置成 save 还是 background
选哪个取决于你写代码的习惯和机器性能:
-
"lint_mode": "background":默认值,编辑时实时检查。适合小文件、规则少、机器快的场景;但大型 JS 文件 + 复杂 ESLint 规则容易卡顿、误报 -
"lint_mode": "save":仅保存时触发。响应快、零干扰,适合多数人;但无法及时发现拼写错误或括号不匹配这类低级问题 -
"delay": 0.5对save模式无实际作用,但某些旧版本 SublimeLinter 会误读,建议保留以防意外 - 别设成
"on_load"或"on_modified"单独使用——它们不构成完整模式,SublimeLinter 会忽略
最易被忽略的一点:即使你把 lint_mode 设成 save,如果当前文件没保存过(比如新建 tab 写完直接关),那一次检查都不会发生——它真就只在 Ctrl+S 那一刻运行。











