SublimeLinter需完整环境链:编辑器→框架→语言子插件→CLI工具→系统PATH;缺任一环即静默失效,必须同步安装SublimeLinter、对应子插件(如SublimeLinter-eslint)及CLI工具(如eslint),并正确配置lint_mode为"save"、executable路径和语法识别模式。

SublimeLinter 不是开个开关就能用的功能,它本质是一条「环境链」:编辑器 → 插件框架 → 语言适配器 → 外部 CLI 工具 → 系统 PATH。断掉任意一环,保存时就静默失效,连错误提示都不会出现。
必须装齐 SublimeLinter + 语言子插件 + CLI 工具
只装SublimeLinter 框架,什么也不会发生;只装 SublimeLinter-eslint 却没装 eslint 命令行工具,控制台会报 "command not found: eslint";只装全局 eslint 但 Sublime 启动时没读到你的 shell PATH,照样不触发。
- 用
Ctrl+Shift+P→Package Control: Install Package依次安装:SublimeLinterSublimeLinter-eslint(JS)、SublimeLinter-flake8(Python)、SublimeLinter-contrib-xml(XML)等 - 终端里确认 CLI 工具可用:
eslint --version、flake8 --version、xmllint --version - Windows 用户注意:
SublimeLinter-eslint只认eslint,别填eslint.cmd
lint_mode 设成 "save" 才真正在保存时检查
默认lint_mode 是 ["on_load", "on_modified"],意味着你敲每个字都在调用 eslint 或 flake8,大型文件极易卡顿,还常因未闭合引号等中间态误报。
- 打开
Preferences → Package Settings → SublimeLinter → Settings - 在用户设置(右侧面板)中写入:
{ "lint_mode": "save", "delay": 0.5, "show_marks_in_minimap": false } -
"lint_mode": "save"是唯一能确保「只在 Ctrl+S 后校验」的取值;设成"background"或["on_save"](带方括号)都可能被旧版本忽略
90% 的“没反应”其实是 PATH 或语法识别问题
SublimeLinter: Show All Errors 显示 No lint results,不是插件坏了,而是路径或上下文没对上:
- 检查右下角状态栏:当前文件必须是
JavaScript、Python或XML,不能是Plain Text;点一下手动切 - macOS/Linux 用户:确认
~/.zshrc或~/.bash_profile里有export PATH,且 Sublime 是从终端用subl .启动的(双击图标不继承 shell PATH) - Windows 用户:在 Sublime 控制台(
Ctrl+`)运行import os; print(os.environ.get('PATH')),看输出是否包含npm全局模块路径或Python\Scripts目录 - JS 文件报
Unexpected token import?说明 ESLint 没读到项目里的.eslintrc.js,或配置里缺ecmaVersion: 2020
executable 路径填错是最隐蔽的失败点
当系统有多个 Node 版本(nvm/fnm)、Python 环境(pyenv)、或 Homebrew 安装位置不标准时,SublimeLinter 默认靠 PATH 查找会失败——这时必须硬编码路径。
- 在用户设置中加:
{ "linters": { "eslint": { "executable": ["/Users/yourname/.nvm/versions/node/v20.15.0/bin/eslint"] }, "flake8": { "executable": ["/Users/yourname/.pyenv/shims/flake8"] } } } - 路径必须指向可执行文件本身,不是目录;Windows 用正斜杠或双反斜杠,避免转义问题
-
which eslint和which flake8的输出结果,就是你应该复制进去的内容
真正卡住人的从来不是“怎么装”,而是“为什么装了却没标红”。PATH、语法模式、executable 路径、配置文件位置——这四点串不起来,SublimeLinter 就只是个空壳。

















