先说一个核心判断:SublimeLinter 不会自动找活干,它本质上是一个调度中心——真正负责检查代码的,是你系统里装的那些命令行工具,比如 eslint、pylint 或 flake8。如果这些工具没装、路径不对,或者 Sublime 压根没认出当前文件是 Python 还是 Ja vaScript,那插件就会保持静默,什么标记都不会出现。

安装后没反应?先排查这三件事
绝大多数“没反应”的情况,不是配置有多复杂,而是基础链路断了。经验表明,90% 的问题都卡在下面三个环节:
- Package Control 必须安装到位,并且能正常调出。按
Ctrl+Shift+P弹出面板后,输入Install Package应该有响应。 - SublimeLinter 主插件本身要通过 Package Control 安装。注意,光装
SublimeLinter-eslint或SublimeLinter-pylint不行,主插件是基础。 - 对应语言的命令行工具必须全局可执行。在终端里运行
eslint --version或flake8 --version,必须能正常返回版本号,而不是报command not found。
这里有一个容易踩坑的地方:macOS 上如果用了 pyenv 或 Homebrew 安装 Python,flake8 通常躲在 /opt/homebrew/bin 或 ~/.pyenv/shims 目录下,Sublime 默认不会去这些路径里找。
装了 pylint 但 Sublime 仍然不标错?
这是因为 SublimeLinter 的检查触发条件比较严格:它需要语法类型被识别、子插件已安装、以及对应的二进制文件可执行,三个条件同时满足才会启动。常见的断点有这几个:
- 右下角状态栏显示的是
Plain Text而不是Python。点击切换,或者确保文件以.py结尾并已保存。 - 只装了
pylint,但没装SublimeLinter-pylint。主插件没有能力直接调度 pylint,必须靠子插件来桥接。 pylint安装在虚拟环境里,而 Sublime 启动时没有加载那个环境变量。解决办法是在用户设置中显式指定路径:{ "linters": { "pylint": { "executable": "/path/to/venv/bin/pylint" } } }
不要用 pip install pylint 在系统 Python 下装完,又指望 Sublime 用 pyenv 的 Python 去调用它——路径根本对不上。
lint_mode 选 background 还是 on_sa ve?
这取决于你写的代码类型和机器性能,两者适用场景不同:
"lint_mode": "background"是实时检查,每敲一个字符都触发。适合小文件、本地开发、机器比较新的情况。但如果是大文件或者老旧笔记本,可能会卡顿;而且有些 linter(比如pylint)启动慢,会导致高亮延迟。"lint_mode": "on_sa ve"只在 Ctrl+S 后检查。推荐用于团队项目、包含类型检查的场景,或者使用pylint时。这样能避免干扰输入节奏,也减少误报带来的干扰。
需要警惕的是,不要同时启用多个 linter。比如 flake8 和 pylint 一起开,规则重叠、反馈冲突,SublimeLinter 不会为你做去重,结果反而更难读。
配置位置:菜单 → Preferences → Package Settings → SublimeLinter → Settings,编辑的是「User」文件,不是 Default。
路径配置写错一个斜杠就失效
SublimeLinter 对 paths 和 executable 的路径格式极其敏感,尤其在 macOS/Linux 下:
paths是目录列表,不是文件路径。举个例子,如果flake8在/Users/me/.pyenv/shims/flake8,那paths应该填"/Users/me/.pyenv/shims",而不是带flake8的完整路径。- Windows 用户要注意反斜杠:
"C:\Users\me\AppData\Roaming\npm\eslint.cmd",单个\会被当成转义符。 - 修改完设置必须重启 Sublime,热重载不生效。
最稳妥的验证方式:打开 Sublime 控制台(Ctrl+`),输入 import os; print(os.environ.get('PATH')),看看输出里有没有你期望的 bin 目录。Sublime 启动时只读这一份 PATH,问题往往就出在这里。