3个不稳定版本
使用旧的Rust 2015
| 0.3.1 | 2018年6月24日 |
|---|---|
| 0.3.0 | 2018年6月23日 |
| 0.2.2 | 2018年6月13日 |
#13 in #navigate
51KB
1.5K SLoC
itree
itree是Linux工具tree的交互式导航版本,使用Rust编写。它旨在扩展tree的功能,提供直观的可管理、交互式命令行界面来查看目录结构。
与tree在大型目录中使用时可能令人感到不知所措相比,itree允许您以直观的方式,按照自己的节奏检查文件系统。它还遵守gitignore规则并支持折叠,让您能够专注于您最感兴趣的文件!
itree依赖于由ripgrep使用的文件系统遍历器,以尽可能少的开销/延迟为您提供tree的有用性!(参见下方的基准测试。)
tree |
itree |
|---|---|
![]() |
![]() |
![]() |
![]() |
安装
使用brew
itree通过Homebrew提供!只需运行
$ brew install sashaweiss/projects/itree
使用cargo
itree还可在crates.io上找到!只需运行
$ cargo install itree
从源代码构建
要从源代码构建,请确保您已安装Rust和cargo。(如果没有,请通过Rustup进行安装。)然后
$ git clone https://github.com/sashaweiss/itree
$ cd itree
$ cargo install
使用方法
运行itree将启动一个交互式CLI。使用itree --help查看完整配置和UI选项列表!
- 使用箭头键移动,按视觉上的方式:
Up和Down在相同目录级别的文件之间移动,而Left和Right则分别向上和向下移动一个目录级别。itree还支持Vim快捷键 - 使用h、j、k和l代替箭头键。
- 使用
f折叠/展开目录。 - 使用
q、Ctrl-C或Esc退出。
基准测试
以下表格对比了itree与tree以及ripgrep(itree从其中获取文件系统迭代器)的性能。
简单来说:itree速度很快 - 比起tree要快得多,并且比纯ripgrep的减速要小得多!(主要归功于BurntSushi的出色ignore crate)。
方法论
我使用了hyperfine进行基准测试 - 特别是以下命令:
$ hyperfine --warmup 2 <CMD> --show-output
其中<CMD>被以下表格的第一列所填充。--show-output用于避免抑制每个命令的输出,因为打印/渲染是tree和itree执行的重要部分。--warmup 2使每个命令在测量之前运行两次,以潜在地预热缓存。
结果
所示结果是hyperfine报告的均值和标准差。每个结果都是至少10次测量的结果。
- 第一行显示了用户等待
itree显示其UI所需的时间。 - 第二行显示了
itree精确模拟tree行为所需的时间。 - 第三行显示了
tree绘制目录结构所需的时间。 - 最后一行显示了
ripgrep静默扫描目录结构所需的时间。由于ripgrep和itree使用相同的文件系统迭代器,这代表了计算itree开销的基线。
| 命令 | μ ± σ(从我的$HOME运行) |
μ ± σ(在此存储库中运行) |
|---|---|---|
itree--无-忽略--无-排除--安静 |
2.953s ± 0.070s | 0.012s ± 0.002s |
itree--无-忽略--无-排除--无-交互 |
3.511s ± 0.043s | 0.031s ± 0.010s |
tree |
15.005s ± 4.891s | 0.043s ± 0.014s |
rg--无-忽略--文件--安静 |
1.373s ± 0.051s | 0.010s ± 0.014s |
未来工作
- 编写更全面的源代码文档。
- 实现类似于
tree -h的功能。 - 添加与光标下文件交互的命令。
- 添加将光标所在的文件夹
cd到文件夹中的命令。
依赖关系
~5–13MB
~143K SLoC



