一个命令行下的Todo任务工具.
思想上来源于sjl写的 t ,里面输出短id的函数使用了sjl写的,其余自己重新实现了,加上了日期的输出和排序.
__________
/_________/
| |
| |
| |
| |
|_|
注意: 因为用到了argparse
模块, 所以需要 Python >= 2.7
把t克隆到本地.
git clone git@github.com:tankywoo/t.git ~/.t
修改shell配置文件(.bashrc/.zshrc等)
alias t='python ~/.t/t.py --task-dir ~/.tasks --list tasks'
意思就是设置一个alias命令t
, 任务目录在~/.tasks
, 任务文件是tasks
这个任务文件夹不需要手动新建, 在查看或新建任务时, 如果没有, 会自动新建.
任务文件名设置为tasks后, 任务目录里会有tasks
和.tasks.done
两个文件, 分别表示todo和done两个任务的存储文件.
直接使用 t
命令就可以查看任务
15:27 tankywoo@gentoo-jl /home/tankywoo
% t
7 | 06-04 | 测试t工具
a | 06-04 | 增加t的使用说明
左边是任务的id号, 中间是新增/修改时间, 右边是任务内容
使用 t --done
命令可以查看已完成任务
15:29 tankywoo@gentoo-jl /home/tankywoo
% t --done
f | 06-04 | 这是已完成的任务
使用命令 t 任务内容
可以新增任务
15:29 tankywoo@gentoo-jl /home/tankywoo
% t 新增任务
15:30 tankywoo@gentoo-jl /home/tankywoo
% t
7 | 06-04 | 测试t工具
a5 | 06-04 | 新增任务
af | 06-04 | 增加t的使用说明
默认增加日期, 时间是当天的date, 格式是 ISO Format 也可以指定任务日期, 格式也是 ISO Format
15:29 tankywoo@gentoo-jl /home/tankywoo
% t --date 2013-06-02 新增任务并指定时间
15:30 tankywoo@gentoo-jl /home/tankywoo
% t
a5 | 06-02 | 新增任务并指定时间
7 | 06-04 | 测试t工具
af | 06-04 | 增加t的使用说明
使用 t -e 任务id 修改后的任务内容
15:32 tankywoo@gentoo-jl /home/tankywoo
% t -e a5 "新增任务(修改后)"
15:32 tankywoo@gentoo-jl /home/tankywoo
% t
7 | 06-04 | 测试t工具
a5 | 06-04 | 新增任务(修改后)
af | 06-04 | 增加t的使用说明
使用 t -f 任务id
可以完成指定任务
15:33 tankywoo@gentoo-jl /home/tankywoo
% t
7 | 06-04 | 测试t工具
a5 | 06-04 | 新增任务(修改后)
af | 06-04 | 增加t的使用说明
15:33 tankywoo@gentoo-jl /home/tankywoo
% t -f a5
15:33 tankywoo@gentoo-jl /home/tankywoo
% t
7 | 06-04 | 测试t工具
a | 06-04 | 增加t的使用说明
15:33 tankywoo@gentoo-jl /home/tankywoo
% t --done
a | 06-04 | 新增任务(修改后)
f | 06-04 | 这是已完成的任务
使用 t --undo 任务id
可以把一个已完成的任务重新加入todo列表
使用 t -r 任务id
可以直接删除一个任务
t | wc -l
t | grep 'keyword'
比如可以把任务列表分为 today
和 someday
, 可以在上面提到的shell配置文件中再添加alise命令
alias today='python ~/.t/t.py --task-dir ~/.tasks --list today'
alias someday='python ~/.t/t.py --task-dir ~/.tasks --list someday'
这样就可以使用 today 和 someday 命令添加任务到相应任务列表
命令行todo虽然方便, 但是同步却成了一个问题.
根据我个人的使用, 有以下几个方法(具体过程不详细描述, 可自行Google)
Dropbox 有 CLI
版本, 我最开始就用的这个, 不过考虑到间歇性同步失败(你懂的), 所以放弃了.
如果你有一台 VPS
, 可以做 rsync 当中间节点, 几台机器都通过 rsync 同步.
比如国外的Github, 国内的Gitcafe等等, 如果不想让别人看见你的任务, 可以弄一个私有仓库.
当然, 代码托管本来是用于托管代码的, 当作网盘似得放任务不是很厚道 :(
我暂时还没想到其他方法, 如果你有好的方法, 可以给我 email: me@tankywoo.com 或者直接 issue
如果 t
在新增任务时, 任务内容有一些shell内置命令或其他命令, 可能会执行这个命令. 这时需要用单引号''
或双引号""
括住任务内容即可.
- 增加任务
- 查看TODO任务(按日期排序)
- 完成任务
- 删除任务
- 查看DONE任务
- 将DONE任务重新移回TODO
- 任务显示日期(月-日)
- 增加任务日期的设置
- 当 添加/删除/完成/修改 任务时, 会输出这个任务