9 个版本 (5 个破坏性更新)
0.6.1 | 2024年4月1日 |
---|---|
0.6.0 | 2024年3月31日 |
0.5.0 | 2024年3月28日 |
0.4.0 | 2024年3月25日 |
0.1.3 | 2024年3月21日 |
#330 在 开发工具
每月 23 次下载
1.5MB
1.5K SLoC
CodeSort
您的代码中充满了列表:枚举变体、结构字段、匹配分支、函数声明等。
当列表增长时,按字母顺序排序它有时很有用,可以帮助您跟踪各个部分。
当然,您不能只是排序行:代码将不再工作;注释和注解将丢失,间距将不正确,等等。
手动排序代码是一项繁琐的任务。
codesort 可以为您完成这项工作,只需在您的 IDE 中对代码的所需部分使用快捷键。
以下是光标行周围排序前后的示例
示例
排序 Rust 枚举的变体
排序 Rust 结构的字段
排序 JavaScript 函数分配
在此,已可视地选择了排序范围。排序巨大的 Rust match
的分支
安装 codesort
已安装 Rust 开发环境 安装,运行
cargo install codesort
用法
对文件中的范围进行排序
codesort --range 6:26 src/my/file.rs
围绕行进行排序
除非您明确想要从排序中排除列表的一部分(例如,您希望保留在结构末尾的字段),否则您应首选使用 --around
,它会为您选择范围。
此说明书的第一个示例已使用以下命令排序
codesort --around 14 src/my/file.rs
从 6
到 26
的任何其他行号都很好,除了更深的行 21
和 22
(如果您按行 22
排序,您将排序 start
和 end
,这可能不是期望的结果)。
从 stdin 排序,返回到 stdout
当未提供路径给 codesort 时,指定语言使用 --lang/
-l
cat some/file.js | codesort -l js
代码编辑器集成
默认情况下,codesort 从 stdin 读取要排序的代码,并将排序后的代码写入 stdout。
它可以排序整个输入、指定的范围(使用 --range
),或者选择给定行周围的最好范围(使用 --around
)。
您还可以使用 --src
和 --dst
将输入和输出更改为文件。
如有必要,您可以提供文件名给 codesort 进行语言检测(文件不必存在,只使用名称的扩展名,例如 .js
)。
这些选项使得将 codesort 集成到任何编辑器中都变得容易。以下介绍 vim 和 IntelliJ(欢迎为其他编辑器贡献)。
在 vim / neovim 中使用 codesort
排序选择
当您不想排序整个范围(例如,因为您想在开始处保留特定的条目)时,您可以指定范围。
通过视觉选择选择,然后输入 :
,然后 !codesort
。这会将输入更改为
:'<,'>!codesort
按 enter
键:选择将使用 codesort 进行排序。
添加绑定以排序当前行周围的内容
通常您不需要选择要排序的区域。您可以要求 codesort 自动选择围绕您当前行的排序区域。
在您的 vim 配置中定义此绑定
" sort the optimal range around the current line
" See https://github.com/Canop/codesort
nnoremap <Leader>cs ma<ESC>:execute ":%!codesort --around ".line('.')." --detect ".shellescape(expand('%:t'))<CR>`a
输入引导键然后 'cs' 将自动选择围绕当前行的代码块集合并进行排序。
命令说明
- 使用
ma
将当前位置保存到a
注册中 - 构建包含行号的命令,然后使用
:execute
执行 - codesort 命令通过
--around
传递当前行号 - codesort 命令通过
--detect
传递文件名进行语言检测 - 然后恢复上一个位置
在 IntelliJ 中使用 codesort
在范围内排序
配置快捷方式(文件 -> 设置 -> 工具 -> 外部工具)如下
参数:--range $SelectionStartLine$:$SelectionEndLine$ $FileDir$/$FileName$
设置截图
使用方法:右键单击选择 -> 外部工具 -> codesort
在当前行周围排序
参数:--around $LineNumber$ $FileDir$/$FileName$
设置截图
支持的代码类型
现在有 3 种代码分析器可用
- Rust / C / Zig
- Java
- JavaScript
贡献
Codesort 在 Rust 上经过了大量测试,但需要为其他语言进行测试和可能的改进。
无论语言和用例如何,请到 Miaou 上进行讨论。
许可
codesort 根据 AGPL-3.0 许可。
您可以使用 codesort 程序对您选择的代码进行排序,甚至是商业代码。
依赖关系
~9–19MB
~258K SLoC