2026-04-30 16:18:54 +08:00
|
|
|
|
# 90-1 参考资料:文件树 Rust 生态调研
|
|
|
|
|
|
|
|
|
|
|
|
是的,Rust生态中有多个类似VSCode文件树的实现,涵盖**终端(TUI)组件**、**GUI组件**和**独立应用**三类,均支持文件/目录的层级展示、折叠展开与交互操作。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 一、终端(TUI)领域:VSCode风格文件树组件/应用
|
|
|
|
|
|
|
|
|
|
|
|
#### 1. filetree (ft) - 最接近VSCode文件树的TUI实现
|
|
|
|
|
|
- 仓库:https://github.com/nyanko3141592/filetree
|
|
|
|
|
|
- 版本:v0.3.5(2026年3月)
|
|
|
|
|
|
- 核心特性:
|
|
|
|
|
|
- VSCode风格界面,支持文件/目录层级展示与折叠
|
|
|
|
|
|
- Git状态集成(修改、未跟踪、忽略文件颜色标记)
|
|
|
|
|
|
- Vim键绑定(hjkl导航)与鼠标支持
|
|
|
|
|
|
- 系统剪贴板集成,支持文件复制/剪切/粘贴
|
|
|
|
|
|
- 可通过cargo直接安装:`cargo install filetree`
|
|
|
|
|
|
|
|
|
|
|
|
#### 2. fileview - 轻量级VSCode风格文件树TUI
|
|
|
|
|
|
- 仓库:https://crates.io/crates/fileview
|
|
|
|
|
|
- 版本:v1.8.1(2026年2月)
|
|
|
|
|
|
- 特点:
|
|
|
|
|
|
- 极简设计,启动迅速,无需配置
|
|
|
|
|
|
- 支持图像预览(Kitty/iTerm2/Sixel)与语法高亮
|
|
|
|
|
|
- 模糊查找功能,快速定位文件
|
|
|
|
|
|
- 多文件选择与批量操作
|
|
|
|
|
|
|
|
|
|
|
|
#### 3. 通用TUI文件树组件库
|
|
|
|
|
|
| 库名称 | 适用框架 | 核心特点 |
|
|
|
|
|
|
|--------|----------|----------|
|
|
|
|
|
|
| tui-file-explorer | Ratatui | 双面板布局,独立左右浏览窗格,Tab切换 |
|
|
|
|
|
|
| tui-tree-widget | Ratatui | 通用树视图组件,支持自定义数据结构 |
|
|
|
|
|
|
| ratatui-explorer | Ratatui | 高度可定制,支持键盘输入处理 |
|
|
|
|
|
|
| ratkit | Ratatui | 包含树视图在内的综合组件库,支持可调整大小的分割面板 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 二、GUI领域:Rust图形界面文件树组件
|
|
|
|
|
|
|
|
|
|
|
|
#### 1. iced_file_tree - Iced GUI框架的文件树组件
|
|
|
|
|
|
- 仓库:https://crates.io/crates/iced_file_tree
|
|
|
|
|
|
- 适配Iced跨平台GUI库(受Elm启发)
|
|
|
|
|
|
- 支持文件系统导航与层级展示,可集成到桌面应用中
|
|
|
|
|
|
|
|
|
|
|
|
#### 2. Tauri应用中的文件树实现
|
|
|
|
|
|
- Tauri(Rust+WebView)可通过Rust后端+前端组件实现VSCode风格文件树
|
|
|
|
|
|
- 后端:使用`std::fs::read_dir`读取目录内容,返回`(path, is_directory)`元组
|
|
|
|
|
|
- 前端:创建嵌套HTML列表(ul/li)表示文件夹结构,添加VSCode风格图标与交互
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 三、使用场景与选择建议
|
|
|
|
|
|
|
|
|
|
|
|
| 使用场景 | 推荐选择 | 理由 |
|
|
|
|
|
|
|----------|----------|------|
|
|
|
|
|
|
| 快速体验VSCode风格文件树 | filetree(ft) | 开箱即用,VSCode界面风格,Git集成 |
|
|
|
|
|
|
| 集成到Ratatui终端应用 | tui-file-explorer | 专为Ratatui设计,双面板布局,功能完善 |
|
|
|
|
|
|
| 构建跨平台GUI应用 | iced_file_tree | 适配Iced框架,原生GUI体验 |
|
|
|
|
|
|
| 开发Tauri桌面应用 | 自定义实现 | 结合Rust后端与Web前端,灵活性最高 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 四、快速上手示例
|
|
|
|
|
|
|
|
|
|
|
|
使用filetree(ft)快速体验VSCode风格文件树:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 安装
|
|
|
|
|
|
cargo install filetree
|
|
|
|
|
|
|
|
|
|
|
|
# 运行(当前目录)
|
|
|
|
|
|
ft
|
|
|
|
|
|
|
|
|
|
|
|
# 常用操作
|
|
|
|
|
|
hjkl - 导航(Vim风格)
|
|
|
|
|
|
g/G - 跳至顶部/底部
|
|
|
|
|
|
Enter - 打开文件/文件夹
|
|
|
|
|
|
dd - 删除文件/文件夹
|
|
|
|
|
|
yy - 复制,p - 粘贴
|
|
|
|
|
|
:q - 退出
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-05-14 05:52:08 +08:00
|
|
|
|
如果需要将文件树组件集成到 Rust 项目中,建议根据应用类型(终端/GUI)选择对应的组件库,或参考 filetree 的实现方式进行定制开发。
|