如何在vscode中保存时运行cargo fmt?

s4e*_*eed 37 rust rust-cargo visual-studio-code

是否可以使 Visual Studio Codecargo fmt在文件保存时运行?

小智 76

安装扩展 rust-analyzer(官方推荐的vscode 扩展),并在 settings.json 中添加以下内容:

"[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer",
    "editor.formatOnSave": true
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*eid 26

  1. 如果尚未安装,请安装rust-analyzer 。
  2. 在 Visual Studio Code 的设置中,启用编辑器:保存时格式化( editor.formatOnSave)。

  • 我还要补充一点,您应该确保没有全局设置“editor.defaultFormatter”。例如,如果您全局启用了 "editor.defaultFormatter": "esbenp.prettier-vscode" (或其他格式化程序)而不是基于每种语言,则 VSCode 将尝试使用该格式化程序来代替 rust-analyzer Rust 代码。我见过一些 JS 开发人员在过渡到 Rust 项目时为此浪费了 10 或 15 分钟的时间。 (4认同)

小智 21

这对我有用。在文件 settings.json 中大括号内的某处插入以下内容:

    "editor.formatOnSave": true,
    "editor.formatOnType": true,
    "rust-analyzer.rustfmt.enableRangeFormatting": true,
    "[rust]": {
        "editor.defaultFormatter": "rust-lang.rust-analyzer", 
        "editor.formatOnSave": true 
    },
Run Code Online (Sandbox Code Playgroud)


ati*_*kan 12

如果您将formatOnSaveMode设置为修改修改IfAvailable,则可能需要将其更改为file。这可能是分析仪的一个小问题。

如果您想保留默认设置不变,请仅针对 rust 执行此操作;

"[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer",
    "editor.formatOnSave": true,
    "editor.formatOnSaveMode": "file"
  },
Run Code Online (Sandbox Code Playgroud)

  • 我只需要添加: "editor.formatOnSaveMode": "file" 这是有效的答案!谢谢你! (3认同)

Tod*_*odd 9

当前版本的 Rust 扩展 > 0.7.8 不需要安装其他任何东西。formatOnSave在 VS Code文件中启用settings.json

  "[rust]": {
        "editor.formatOnSave": true
    }
Run Code Online (Sandbox Code Playgroud)