fables-tales/rubyfmt

GitHub: fables-tales/rubyfmt

一款用 Rust 编写的高速 Ruby 代码自动格式化工具,帮助团队以「零配置」方式统一代码风格。

Stars: 1186 | Forks: 58

# rubyfmt 一个用 Rust 编写的快速、具有主见性的 Ruby 格式化工具。 - 在线尝试 → [rubyfmt.run](https://rubyfmt.run) 发音: (en) "Ruby Format", (jp) ルビーフォーマット ## 快速开始 ``` # 安装 brew install rubyfmt # 就地格式化文件 rubyfmt -i myfile.rb # 格式化并打印到 stdout rubyfmt myfile.rb ``` ## 安装 ### Homebrew ``` brew install rubyfmt ``` ### 从源码构建 1. 确保你已经安装了 Cargo 2. 运行 `cargo build --release` 3. 将 `target/release/rubyfmt-main` 复制到你的 PATH 路径下,并重命名为 `rubyfmt` ## 用法 ### 命令行 | 命令 | 描述 | | ------------------------ | ------------------------------ | | `rubyfmt file.rb` | 将格式化后的代码输出到 stdout | | `rubyfmt -i file.rb` | 就地格式化文件 | | `rubyfmt -c file.rb` | 显示更改的差异 | | `cat file.rb \| rubyfmt` | 从 stdin 读取 | 你也可以传递目录来一次性格式化多个文件。 有关完整的命令行界面,请参阅 `rubyfmt --help`。 ### 头部注释 通过头部注释在单文件基础上控制格式化: - `rubyfmt --header-opt-in` - 仅格式化顶部带有 `# rubyfmt: true` 的文件 - `rubyfmt --header-opt-out` - 跳过顶部带有 `# rubyfmt: false` 的文件 ### 忽略文件 在你的项目根目录中创建一个 `.rubyfmtignore` 文件,以在格式化时排除特定文件。它使用与 `.gitignore` 相同的语法。 默认情况下,rubyfmt 也会遵循你的 `.gitignore`。使用 `--include-gitignored` 可以强制格式化这些文件。 ## 编辑器集成 ### Visual Studio Code 广受欢迎的 [`ruby-lsp` 扩展](https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-lsp)提供了一个 [rubyfmt 插件](https://github.com/reese/ruby-lsp-rubyfmt-formatter)。安装该扩展: ``` # 添加到项目 bundle add ruby-lsp-rubyfmt-formatter --group development # 全局安装 gem install ruby-lsp-rubyfmt-formatter ``` 然后将以下内容添加到你的 `.vscode/settings.json` 中: ``` { "[ruby]": { "editor.defaultFormatter": "Shopify.ruby-lsp", "editor.formatOnSave": true }, "rubyLsp.formatter": "rubyfmt" } ``` Rubyfmt 也受(现已弃用的)[VSCode Ruby 扩展](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby)支持。请将以下内容添加到你的 `settings.json` 中: ``` { "ruby.useLanguageServer": true, "ruby.format": "rubyfmt", "[ruby]": { "editor.formatOnSave": true } } ``` 此外,[Formatto for VS Code](https://marketplace.visualstudio.com/items?itemName=damolinx.formatto) 扩展也支持此工具。安装该扩展后,将以下配置添加到你的 `.vscode/settings.json` 中,将其作为项目的格式化工具: ``` { "[ruby]": { "editor.defaultFormatter": "damolinx.formatto" }, } ``` 查看其 [README](https://github.com/damolinx/vscode-formatto#readme) 以获取更多配置选项。 ### Neovim + null-ls [null-ls](https://github.com/jose-elias-alvarez/null-ls.nvim) 插件开箱即用地支持 rubyfmt: ``` null_ls.setup({ sources = { null_ls.builtins.formatting.rubyfmt, }, }) ``` 有关更多详细信息,请参阅 [null-ls 文档](https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#rubyfmt)。 ### Vim 1. 运行 `cargo build --release` 2. 将 `source /path/to/rubyfmt.vim` 添加到你的 `~/.vimrc` 中 3. 在 source 行下方添加 `let g:rubyfmt_path = /path/to/target/release/rubyfmt-main` ### RubyMine(以及 JetBrains IDE) 1. 安装 [File Watchers 插件](https://www.jetbrains.com/help/ruby/settings-tools-file-watchers.html) 2. 进入 File | Settings | Tools | File Watchers 3. 导入 [`watchers.xml`](editor_plugins/rubymine/watchers.xml) 4. 可选择将 Level 设置为 Global 以应用于所有项目 有关更多详细信息,请参阅 [File Watchers 文档](https://www.jetbrains.com/help/ruby/using-file-watchers.html#ws_filewatcher_type_and_location_of_input_files)。 ### Sublime Text 通过 Package Control 安装 [rubyfmt 插件](https://github.com/toreriklinnerud/sublime-rubyfmt/)。 文件会在保存时格式化,或者通过 `Cmd + ;`(macOS)/ `Alt + ;`(其他系统)格式化。设置: ``` { "ruby_executable": "ruby", "rubyfmt_executable": "rubyfmt", "format_on_save": true } ``` ### Atom 从 Settings > Packages 安装 [rubyfmt 包](https://github.com/toreriklinnerud/atom-rubyfmt/)。 文件会在保存时格式化,或者通过 `Cmd + ;`(macOS)/ `Alt + ;`(其他系统)格式化。 ## Rubocop 若要与 Rubocop 结合使用,请参阅 [rubocop-rubyfmt](https://github.com/reese/rubocop-rubyfmt) gem。 ## 贡献 请查阅我们的[贡献指南](./CONTRIBUTING.md)。 ## 维护状态 原作者(fables-tales)已不再在业余时间进行开源工作。 其他贡献者会定期在 `rubyfmt` 上工作,并且拥有提交权限的贡献者可以合并通过 CI 的更改。
标签:Cargo, DNS解析, Homebrew, Ruby, rubyfmt, Ruby LSP, Rust, VS Code扩展, 代码格式化工具, 代码美化, 代码规范化, 可视化界面, 威胁情报, 开发者工具, 开源项目, 知识库, 编辑器插件, 网络流量审计, 自动格式化, 软件开发, 通知系统, 错误基检测, 静态代码分析