sublime text 默认不检查语法,需 sublimelinter 框架 + 对应语言 linter(如 eslint、flake8)+ 正确 path 配置三者协同;90% 无反应因 sublime 找不到 cli 工具,因其不继承 shell 的 path,须在用户设置中手动配置 paths 并验证 os.environ.get("path")。

Sublime Text 默认不检查语法,装完 SublimeLinter 和对应语言插件后仍没反应,90% 是环境链断了——不是插件没装对,而是 Sublime 找不到你系统里的 eslint、flake8 或 pylint 可执行文件。
怎么确认 linter 命令是否真能被 Sublime 调用
别只信终端里 flake8 --version 能跑通。Sublime 不继承 shell 的 PATH,尤其 macOS(zsh)、Windows(nvm/venv 场景)下极易失效。
- 打开 Sublime 控制台(
Ctrl+`或Cmd+`),输入:import os; print(os.environ.get("PATH")),看输出里有没有你装flake8或eslint的目录 - 终端运行
which flake8(macOS/Linux)或where pylint(Windows),拿到完整路径,取其**父目录**填进配置(不是可执行文件全路径) - macOS M1/M2 用户常见错误:路径写了
/usr/bin,那是系统旧 Python,pip install flake8实际装在~/.pyenv/shims或/opt/homebrew/bin
SublimeLinter 用户设置里必须写的三行关键配置
打开 Preferences → Package Settings → SublimeLinter → Settings,在右侧「User」面板中写:
{
"lint_mode": "save",
"paths": {
"osx": ["/opt/homebrew/bin", "/Users/yourname/.pyenv/shims"],
"linux": [],
"windows": ["C:\Users\yourname\AppData\Roaming\npm", "C:\Python312\Scripts"]
},
"show_marks_in_minimap": false
}
-
"lint_mode": "save"是唯一生效的保存时触发开关;设成"background"就变实时了,卡且误报多 -
"paths"必须按操作系统分段写,Windows 路径用双反斜杠\,不能用单斜杠或正斜杠 -
"show_marks_in_minimap": false关掉缩略图边栏标记,避免干扰——它和语法检查无关,但开着容易误以为“有报错却没标出来”
为什么 .eslintrc.js 或 .flake8 配置不生效
SublimeLinter 不读单个文件,只认项目上下文。配置文件存在但没效果,基本是加载方式错了。
- .eslintrc.js 必须放在项目**根目录**,且 Sublime 要通过
Project → Open Folder打开整个文件夹,不是双击打开单个.js文件 - .flake8 同理,且文件名必须是
.flake8(不是setup.cfg或pyproject.toml,除非你额外配了config参数) - ESLint 若提示 “Definition for rule 'xxx' was not found”,说明
.eslintrc.js里用了未安装的插件(如eslint-plugin-react),得npm install eslint-plugin-react --save-dev
Python 用 flake8 还是 pylint?别同时开
二者底层机制冲突,SublimeLinter 会随机启用一个,另一个静默丢弃。
-
flake8:快、轻、专注 PEP 8 + 基础语法(E/F类错误),适合日常开发和 CI 快速过筛 -
pylint:重、全、带类型推断和重构建议,但启动慢、易误报(比如强制 docstring),适合代码审计阶段 - 如果已装
SublimeLinter-flake8,就别再装SublimeLinter-pylint;反之亦然。禁用方法:{"linters": {"pylint": {"disable": true}}}
最麻烦的永远不是配置项写错,而是 Sublime 启动时根本没加载你的 shell 环境——它不读 ~/.zshrc,也不进虚拟环境。解决路径问题比调规则优先级重要十倍。











