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扩展, 代码格式化工具, 代码美化, 代码规范化, 可视化界面, 威胁情报, 开发者工具, 开源项目, 知识库, 编辑器插件, 网络流量审计, 自动格式化, 软件开发, 通知系统, 错误基检测, 静态代码分析