不能——Ruff 本身不提供 Sublime Text 原生插件,ruff-lsp 也非官方支持的 LSP 客户端;实际可用方案是 SublimeLinter-ruff 调用 ruff check CLI,需手动配置路径和规则,不支持实时标红、悬停提示或自动修复,且必须以文件夹形式打开项目并确保语法识别为 Python。

Sublime Text 能不能直接用 Ruff 做语法检测?
不能——Ruff 本身不提供 Sublime Text 原生插件,ruff-lsp 也不是官方 Sublime 支持的 LSP 客户端。你看到的“Ruff + Sublime”组合,实际是绕道 SublimeLinter 框架调用 ruff check 命令行工具,本质仍是 shell 外部调用,不是真正的 LSP 集成。
为什么 SublimeLinter + ruff check 会失败或没反应?
常见现象:安装完 SublimeLinter 和 SublimeLinter-ruff 后,保存文件无提示、控制台报 Unable to locate 'ruff' 或根本不触发检查。核心原因就两个:
-
ruff未全局可执行:终端能跑ruff --version,不代表 Sublime 能访问到它(GUI 应用不继承 shell 的PATH) -
SublimeLinter-ruff插件未启用或路径配置错:插件默认可能 disabled,且不自动读取你项目里的pyproject.toml
解决办法必须手动配路径:
打开 Preferences → Package Settings → SublimeLinter → Settings(用户设置),填入类似:
立即学习“Python免费学习笔记(深入)”;
{
"paths": {
"osx": ["/opt/homebrew/bin", "/Users/yourname/.local/bin"],
"linux": ["/home/yourname/.local/bin"],
"windows": ["C:\Users\yourname\AppData\Roaming\Python\Python312\Scripts"]
},
"linters": {
"ruff": {
"disable": false,
"args": ["--fix", "--select", "E,F,W,C90"]
}
}
}
其中 /Users/yourname/.local/bin 是 pipx install ruff 后 which ruff 的输出父目录;Windows 路径要对应 pipx 或 pip install --user 的 Scripts 目录。
ruff check 和 ruff-lsp 在 Sublime 里有啥区别?
根本不存在 ruff-lsp 在 Sublime 的稳定支持。社区有人尝试用 lsp-sublime 接入 ruff-lsp,但兼容性差、频繁崩溃,且无法正确处理多根工作区或虚拟环境切换。目前唯一可靠路径是 SublimeLinter-ruff + ruff check CLI 模式,它:
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
- 只做同步检查(保存时触发),不支持悬停提示、跳转定义、实时背景标红
- 参数受限:
--fix不生效(SublimeLinter 不支持写回),只能报告问题 - 规则靠
args传参控制,无法动态读取pyproject.toml里的[tool.ruff]配置
如果你需要 hover、快速修复、实时 lint,换编辑器更省时间——VS Code + Ruff 插件或 Neovim + ruff-lsp 才是真正落地的方案。
怎么让 Sublime 的 Ruff 检查结果更准?
默认 ruff check 只开基础规则(PEP 8 + 少量错误),对测试代码、类型提示、未使用变量等基本不报。想贴近真实工程需求,得显式选规则:
在 SublimeLinter → Settings 的 "args" 里加:
["--select", "E,F,W,C90,ANN,B,PT,TRY,ICN,SIM,PERF"]
这代表启用错误类(E)、缺陷类(F)、警告类(W)、复杂度(C90)、类型注解(ANN)、单元测试(PT)、异常处理(TRY)等——但注意:PERF(性能建议)在 Sublime 中可能因超时被截断,慎开。
另外,SublimeLinter 不识别 pyproject.toml,所以项目级配置(比如 ignore = ["E501"])必须手动挪进 args,否则无效。
最易被忽略的一点:Sublime 必须把当前文件识别为 Python(右下角显示 Python,不是 Plain Text),且打开的是整个项目文件夹(Project → Open Folder),否则 .flake8 或 pyproject.toml 根本不会被读取——哪怕你路径配得再准,也白搭。

















