7.1 Ruff 内置 LSP 服务器
从 Ruff 0.4 起,ruff server 成为内置的 Language Server Protocol(LSP) 服务器——不再需要额外的 ruff-lsp Python 包装。
什么是 LSP?
LSP 是微软牵头的标准协议:编辑器(客户端)通过 JSON-RPC 和语言服务器(服务端)通信,获取诊断、补全、跳转、格式化等能力。一个 LSP 服务器能被所有支持 LSP 的编辑器(VS Code、Neovim、JetBrains、Helix、Zed...)复用,而不必为每个 IDE 写插件。
$ ruff server --help
# 手动启动 LSP 服务端(编辑器通常自动启动,不需要手跑)
7.2 VS Code
装官方 Ruff 扩展(Publisher: Astral Software)。配置 .vscode/settings.json:
{
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
},
"ruff.nativeServer": "on",
"ruff.configuration": "./pyproject.toml",
"ruff.lineLength": 100
}
保存文件时:
source.fixAll.ruff→ 跑ruff check --fix(safe 修复)source.organizeImports.ruff→ 排 import(I 族)editor.formatOnSave→ 跑ruff format
7.3 VS Code 常用快捷
- Cmd/Ctrl + .(点号)
- 在 Ruff 划红的行按此,弹出 Quick Fix 菜单——包含"修复该条"、"忽略该规则"、"忽略整族"等操作。
- Cmd/Ctrl + Shift + P → "Ruff: ..."
- 命令面板可运行所有 Ruff 动作:格式整个文件、仅修复、显示输出日志。
- Problems 面板
- 集中查看 Ruff 诊断,按规则或文件过滤。
7.4 JetBrains(PyCharm / IntelliJ)
装 Ruff 插件(Marketplace 搜 Ruff,来自 koxudaxi)。设置路径:
Preferences / Settings
→ Tools → Ruff
☑ Enable Ruff
☑ Run Ruff on save
☑ Run Ruff when formatting
Ruff path: /Users/you/.local/bin/ruff # 或项目 venv 内路径
Project-level config: pyproject.toml
额外推荐:
- 在 Tools → External Tools 里配一个
ruff check --fix $FilePath$,绑快捷键手动修复。 - PyCharm 的 File Watcher 也支持在保存时触发
ruff format。
7.5 Neovim(LSP 原生)
Neovim 0.8+ 内置 LSP 客户端。用 nvim-lspconfig 一行配置启动:
-- init.lua
require('lspconfig').ruff.setup({
init_options = {
settings = {
lineLength = 100,
},
},
})
-- 保存时自动修复 + 格式化
vim.api.nvim_create_autocmd('BufWritePre', {
pattern = '*.py',
callback = function()
vim.lsp.buf.code_action({
context = { only = { 'source.fixAll.ruff' }, diagnostics = {} },
apply = true,
})
vim.lsp.buf.format({ async = false })
end,
})
搭配 Pyright / basedpyright
Ruff 只做 lint/format,不做类型检查。Neovim 里建议同时启用 pyright(或更快的 basedpyright)——两个 LSP 可以并存,Ruff 管 lint/format 诊断,Pyright 管类型诊断。
7.6 Zed / Helix / Sublime
因为用 LSP 标准协议,新派编辑器几乎都是"开箱即用":
- Zed:默认已集成 Ruff,设置里启用即可。
- Helix:languages.toml 加
[[language]] name = "python"并在language-servers添加ruff。 - Sublime Text:通过 LSP-pyright + LSP-ruff 两个包组合。
7.7 PyCharm/VS Code 和 CLI 的版本一致性
最常见的坑:"编辑器说没错,CI 却报错"。原因通常是编辑器插件用的是自带的 Ruff 版本,而 CI 用的是 pyproject 锁住的版本。解决:
# 1. 在 pyproject.toml 锁住 ruff 版本
[tool.uv.dev-dependencies]
ruff = "==0.11.3"
# 2. VS Code settings.json 指向 venv 的 ruff
{
"ruff.path": ["${workspaceFolder}/.venv/bin/ruff"]
}
确保编辑器、pre-commit、CI 三处用的是同一个 Ruff 二进制。
7.8 小结
- Ruff 内置 LSP 服务器
ruff server——所有 LSP 编辑器天然支持。 - VS Code 官方插件(Astral Software)+ 两条 settings 搞定保存即修复 + 格式化。
- JetBrains 用 koxudaxi 的 Ruff 插件。
- Neovim / Zed / Helix 走标准 LSP 协议配置。
- 记得锁定编辑器和 CI 使用同一个 Ruff 版本。