# rust-todo **Repository Path**: blake-john/rust-todo ## Basic Information - **Project Name**: rust-todo - **Description**: 用rust编写的终端todo工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-03 - **Last Updated**: 2026-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rust 待办事项应用 一个基于终端的待办事项应用程序,使用 Rust 和 Ratatui 构建,具有工作区管理、任务跟踪和用户友好的界面。 > [English README](./README.md) ## 功能特性 - **工作区管理**:创建、删除、归档和组织工作区来分类您的任务,支持嵌套子工作区 - **任务管理**:添加带有嵌套子任务的任务,并跟踪其状态(`待办`、`进行中`、`已完成`、`已弃用`) - **截止日期**:为任务设置截止日期,支持灵活的日期输入(具体日期或相对日期如 `3天`、`2周`) - **搜索和筛选**:使用搜索功能快速查找任务 - **数据持久化**:自动将数据保存到 JSON 文件 - **键盘导航**:直观的按键绑定,实现高效的任务管理 - **帮助系统**:内置帮助屏幕显示所有可用的按键绑定 ## 安装 ### 先决条件 - Rust 和 Cargo(推荐最新稳定版本) ### 从源码构建 1. 克隆仓库: ```bash git clone https://github.com/Blake-John/Rust-Todo.git cd rust-todo ``` 2. 构建应用程序: ```bash cargo build --release ``` 3. 运行应用程序: ```bash cargo run --release ``` 或直接运行 [Release](https://github.com/Blake-John/Rust-Todo/releases) 中的二进制文件: ```bash # on Linux ./todo_x86_64-linux ``` ## 使用方法 ### 基本导航 通过以下按键绑定在应用程序中导航: - `Tab`/`1`/`2`/`3`:在工作区、已归档工作区和待办事项列表面板之间切换 - `方向键`/`j`/`k`:在列表中上下导航 - `Enter`/`l`:进入工作区查看其任务 - `h`:从待办事项列表返回到工作区 - `a`:添加新项目(根据焦点添加工作区或任务) - `i`:添加子项目(子工作区或子任务) - `x`:删除选中项目 - `r`:重命名选中项目 - `f`/`/`:筛选/搜索任务 - `?`:显示帮助屏幕 - `Ctrl+s`:手动保存数据 - `q`:退出应用程序 - `Esc`: 退出帮助页面/搜索模式 ### 任务管理 使用以下命令高效管理您的任务: - `t`:将任务标记为`待办` - `p`:将任务标记为`进行中` - `c`:将任务标记为`已完成` - `d`:将任务标记为`已弃用` - `D`:为任务设置截止日期 > [!TIP] > 截止日期的设置方式有三种: > > - 使用 `Ctrl+o` 打开日历,按 `Enter` 选择 > - 直接输入日期 `2025-08-19` > - 输入剩余时间 `1 day` `2 days` `3 weeks` `4 months` ### 工作区管理 使用工作区组织您的工作: - `A`:归档当前工作区 - `R`:恢复已归档的工作区 ### 数据存储 应用程序会自动将数据保存到 `~/.todo/data.json`。此文件包含所有工作区、任务及其状态。 > [!NOTE] > 为了使程序小巧以及保证数据存储的便捷性与可管理性,这里选择使用 `.json` 文件来存储数据,这样可以直接修改并管理数据(虽然不是很有必要) ## 快捷键参考 | 按键 | 操作 | |-----|------| | `Tab`/`1`/`2`/`3` | 在面板间切换焦点 | | `j`/`k` 或方向键 | 上下导航 | | `Enter`/`l` | 进入工作区 | | `h` | 从待办事项列表返回工作区 | | `a` | 添加项目 | | `i` | 添加子项目 | | `x` | 删除项目 | | `r` | 重命名项目 | | `f` 或 `/` | 筛选/搜索 | | `?` | 显示帮助 | | `Ctrl+s` | 保存数据 | | `q` 或 `Esc` | 退出 | ### 任务状态按键 | 按键 | 状态 | |-----|------| | `t` | 待办 | | `p` | 进行中 | | `c` | 已完成 | | `d` | 已弃用 | | `D` | 设置截止日期 | | `+/=` | 提高重要性 | | `-/_` | 降低重要性 | ### 工作区按键 | 按键 | 操作 | |-----|------| | `A` | 归档工作区 | | `R` | 恢复工作区 | ## 代办 - [x] 实现 **紧急程度/重要性** 设置 - [ ] 实现 **排序方法** ,使得可以改变任务排序方式,或按照 **紧急程度** , **剩余时间** 来排序 - [ ] 考虑是否使用 **数据库** 进行数据存储 ## 贡献 欢迎贡献!请随时提交 Pull Request 或创建 Issue。 ## 许可证 该项目基于 Apache 2.0 许可证授权 - 详情请见 [LICENSE](LICENSE) 文件。