todo.txt 简明教程
todo.txt 是一种使用纯文本形式来表示 TODO 清单的一个格式,考虑对其进行一些了解。然后也学习一下 todo.txt-cli 的使用,它是一个使用 shell 去实现的,控制台的 todo.txt 文件管理脚本。
并考虑再之后研究之后能否用 Scala 对todo.txt-cli
的接口进行一个实现,并使用 OSS 作为存储以符合我的同步需求;用 Scala 的原因既是因为它足够好用,能让我去实践一下 FP,也是因为它能够编译成 js——我希望能在浏览器等平台上去运行它。
todo.txt
todo.txt 使用纯文本形式来保存 TODO 清单,其最重要的规则是,一行一个 TODO,它的语法如下。
todo.txt
的格式是十分自由的,其设计初衷之一就是要求人类和机器均可读。对每一个 TODO,其有三个维度:
- 优先级:最重要的 TODO 要能够先出现,其通过
(A-Z)
的语法表示。 - 项目:TODO 应该能够从属于特定项目——人类解决复杂问题的方式就是将其分解为一个个更容易解决的子问题并着手解决。
- 上下文:一个 TODO 要在哪里,在怎样的情况下去完成,换句话说,TODO 的上下文,是需要能够表示的,这样就能让人去关注在当前能够去做的事情。(这似乎是某种称为 GTD,Getting Things Done 的哲学,之后去了解一番)
项目使用+
语法去表示,上下文通过@
语法去表示,两者都接受非空字符串作为名称,两者都可以出现任意次数。
比如,下面指定一个最高优先级的,处在学习项目的,上下文为下班后的 TODO:
1 |
|
我感觉这并非是一个最佳实践——这个 TODO 太大了:学习?学哪个部分?使用还是原理?我认为,项目应当是“+learnSpringMVC”,描述应该是 “中的 blablala”,即:
1
(A) @下班后 +learnSpringMVC RestController
然后是 KV tag,这是供开发者去使用的 metadata,语法是key:value
。
todo.txt
就这些东西…简单,但优雅。
todo.txt-cli
todo.txt-cli
是官方提供的命令行下管理todo.txt
的脚本,这里介绍它的使用。
安装
MacOS 和 Linux 可直接使用,Win 用户可使用 Git For Bash 等终端。
在 官方仓库 下载todo.sh
和todo.cfg
,其中将todo.sh
放置到 PATH 中(下面的示例将其改名为todo
),将todo.cfg
重命名为~/.todo.cfg
,然后编辑.todo.cfg
,将TODO_DIR
变量修改为更合适的位置,比如export TODO_DIR=${HOME:-$USERPROFILE}/.todo
(原配置放到用户目录,简直了!)
然后进行测试,输入todo add 'Hello, Happy World!'
,并检查~/.todo/todo.txt
是否有数据。
示例
先创建测试“数据”,直接编辑todo.txt
或者通过todo add
命令:
1 |
|
列出所有 TODO:
todo list
(或者todo ls
)添加新 TODO:
todo add '+吉他 爬格子'
完成特定 TODO,其中 TODO 通过行号指定(在 list 时会显示):
todo done 1
(或者todo do 1
)删除特定 TODO:
todo rm 1
列出所有带字符串“完成”的 TODO:
todo ls 完成
列出所有不带“完成”的 TODO:
todo ls -完成
列出所有项目或上下文:
todo lsprj
todo lsc
列出所有带吉他项目的 TODO 中出现的项目:
todo lsprj 吉他
先就这些。更多的不如去翻它的 文档。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!