名称: topydo
描述: 使用 topydo 命令行工具管理 todo.txt 任务。支持添加、列出、完成、设置优先级、打标签、组织任务,并处理依赖关系、截止日期、重复任务和项目。适用于任何任务管理、待办清单,或当用户提及任务、待办事项或 todo.txt 时。需要 Python 3 和 pip。支持 macOS、Linux 和 Windows。
许可证: MIT
元数据:
author: github.com/bastos
version: "2.0"
topydo 是一个功能强大的命令行工具,用于管理符合 todo.txt 格式的任务。它支持依赖关系、截止日期、开始日期、重复任务、优先级、项目和上下文。
(A) 2025-01-11 任务文本 +项目 @上下文 due:2025-01-15 t:2025-01-10 rec:1w star:1
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ └─ 星标标记
│ │ │ │ │ │ │ └─ 重复周期
│ │ │ │ │ │ └─ 开始/阈值日期
│ │ │ │ │ └─ 截止日期
│ │ │ │ └─ 上下文
│ │ │ └─ 项目
│ │ └─ 任务描述
│ └─ 创建日期
└─ 优先级 (A-Z)
brew install topydo
pip3 install topydo
安装包含可选功能的版本:
pip3 install 'topydo[columns,prompt,ical]'
sudo apt install python3-pip && pip3 install topydo
配置文件位置(按优先级顺序):
- topydo.conf 或 .topydo(当前目录)
- ~/.topydo 或 ~/.config/topydo/config
- /etc/topydo.conf
示例 ~/.topydo 配置:
[topydo]
filename = ~/todo.txt
archive_filename = ~/done.txt
colors = 1
identifiers = text
[add]
auto_creation_date = 1
[sort]
sort_string = desc:importance,due,desc:priority
ignore_weekends = 1
基础任务:
topydo add "购买日用品"
带优先级(A 为最高):
topydo add "(A) 紧急任务"
带项目和上下文:
topydo add "撰写报告 +项目X @办公室"
带绝对截止日期:
topydo add "提交提案 due:2025-01-15"
带相对截止日期:
topydo add "给妈妈打电话 due:tomorrow"
带星期几截止日期:
topydo add "每周回顾 due:fri"
带开始/阈值日期:
topydo add "未来任务 t:2025-02-01"
带重复周期(每周):
topydo add "给植物浇水 due:sat rec:1w"
带严格重复周期(始终在每月 1 号):
topydo add "支付房租 due:2025-02-01 rec:+1m"
带依赖关系(必须在任务 1 之前完成):
topydo add "编写测试 before:1"
作为任务 1 的子任务:
topydo add "审查代码 partof:1"
列出所有相关任务:
topydo ls
包含隐藏/被阻塞的任务:
topydo ls -x
按项目筛选:
topydo ls +项目X
按上下文筛选:
topydo ls @办公室
按优先级筛选:
topydo ls "(A)"
按优先级范围筛选:
topydo ls "(>C)"
筛选今天到期的任务:
topydo ls due:today
筛选已过期的任务:
topydo ls "due:<today"
筛选周五前到期的任务:
topydo ls "due:<=fri"
组合多个筛选条件:
topydo ls +项目X @办公室 due:today
排除特定上下文:
topydo ls -- -@等待中
按优先级排序:
topydo ls -s priority
按截止日期降序,再按优先级排序:
topydo ls -s desc:due,priority
按项目分组:
topydo ls -g project
限制结果为 5 条:
topydo ls -n 5
自定义输出格式:
topydo ls -F "%I %p %s %{due:}d"
以 JSON 格式输出:
topydo ls -f json
按 ID 完成任务:
topydo do 1
完成多个任务:
topydo do 1 2 3
完成所有今天到期的任务:
topydo do -e due:today
使用自定义日期完成:
topydo do -d yesterday 1
设置优先级为 A:
topydo pri 1 A
为多个任务设置优先级:
topydo pri 1 2 3 B
移除优先级:
topydo depri 1
设置截止日期:
topydo tag 1 due tomorrow
标记星标任务:
topydo tag 1 star 1
移除标签:
topydo tag 1 due
设置带相对日期的自定义标签:
topydo tag -r 1 review 2w
向任务追加文本:
topydo append 1 "附加说明"
追加截止日期:
topydo append 1 due:friday
在文本编辑器中编辑任务:
topydo edit 1
编辑项目中的所有任务:
topydo edit -e +项目X
按 ID 删除:
topydo del 1
删除多个任务:
topydo del 1 2 3
按表达式删除:
topydo del -e completed:today
添加依赖关系(任务 2 依赖于任务 1):
topydo dep add 2 to 1
任务 2 是任务 1 的一部分:
topydo dep add 2 partof 1
列出依赖于任务 1 的任务:
topydo dep ls 1 to
列出任务 1 所依赖的任务:
topydo dep ls to 1
移除依赖关系:
topydo dep rm 2 to 1
可视化依赖关系(需要 graphviz):
topydo dep dot 1 | dot -Tpng -o deps.png
推迟一周:
topydo postpone 1 1w
推迟三天:
topydo postpone 1 3d
推迟时包含开始日期:
topydo postpone -s 1 1w
排序 todo.txt 文件:
topydo sort
撤销上一条命令:
topydo revert
显示撤销历史:
topydo revert ls
列出所有项目:
topydo lsprj
列出所有上下文:
topydo lscon
归档已完成的任务:
topydo archive
today(今天), tomorrow(明天), yesterday(昨天)mon, tue, wed, thu, fri, sat, sun1d(天), 2w(周), 3m(月), 1y(年)5b(排除周末)priority(优先级), due(截止日期), creation(创建日期), completed(完成日期)importance(重要性), importance-avg(平均重要性)project(项目), context(上下文), text(文本), length(长度)使用 desc: 前缀表示降序。例如:desc:importance,due
identifiers = textstar:1 标签id, p, ical