
当 VSCode 中 Ruff 扩展的格式化行为未读取项目根目录下的 ruff.toml(如 line-length 不生效),通常是因为 ruff.format.args 显式传参覆盖了配置文件,需移除参数或显式指定配置路径。
当 vscode 中 ruff 扩展的格式化行为未读取项目根目录下的 `ruff.toml`(如 line-length 不生效),通常是因为 `ruff.format.args` 显式传参覆盖了配置文件,需移除参数或显式指定配置路径。
在 VSCode 中使用 Ruff 扩展进行代码格式化时,若发现 ruff.toml 中定义的规则(例如 line-length = 79)未被应用,而 CLI 命令 ruff format 却能正常识别,这往往并非配置文件路径或语法问题,而是 VSCode 扩展的参数优先级机制导致的——显式传入的命令行参数会强制覆盖 ruff.toml 中的设置。
你当前的配置中存在这一关键项:
"ruff.format.args": ["--line-length=79"]
该配置会使 Ruff 扩展实际执行类似以下命令:
ruff format --line-length=79
此时,即使 ruff.toml 中设置了 line-length = 90 或其他值,CLI 参数 --line-length=79 仍会无条件覆盖 TOML 文件中的配置,导致 ruff.configurationPreference: "filesystemFirst" 失效(该选项仅在无冲突参数时才生效)。
✅ 正确做法有三种,推荐按优先级选择:
-
最简洁:删除冗余参数
若ruff.toml已完整定义格式化行为,直接移除ruff.format.args即可:// 删除或注释掉这一行 // "ruff.format.args": ["--line-length=79"],
保留
"ruff.configurationPreference": "filesystemFirst"后,Ruff 将自动加载项目根目录下的ruff.toml(或.ruff.toml),完全以文件配置为准。 -
显式指定配置路径(兼容多环境)
若需保留args字段(例如用于临时调试),应改用--config指向配置文件,而非硬编码规则:"ruff.format.args": ["--config=./ruff.toml"]
⚠️ 注意:路径为相对于工作区根目录的相对路径;确保
ruff.toml位于 VSCode 打开的文件夹根目录下。 -
启用原生 Rust 服务(推荐升级方案)
设置"ruff.nativeServer": "on"可启用 Ruff 的内置语言服务器(基于 Rust 实现),它原生支持配置文件解析、实时诊断与格式化,且不受args覆盖影响:"ruff.nativeServer": "on"
✅ 优势:性能更高、配置一致性更强、支持更多 Ruff v0.5+ 新特性(如
format子命令的完整语义)。
? 额外验证建议:
- 确保
ruff.toml位于 VSCode 工作区根目录(即打开的文件夹下),而非子目录; - 检查文件名是否为
ruff.toml(非.ruff.toml或pyproject.toml)——Ruff 默认优先查找ruff.toml; - 重启 VSCode 或重新加载窗口(
Ctrl+Shift+P→ Developer: Reload Window),确保扩展重载配置。
通过以上任一方式修正后,Ruff: Format Document 命令将严格遵循 ruff.toml 中的 line-length、indent-width、select 等全部格式化规则,实现 CLI 与编辑器行为的一致性。











