本文介绍一种GTD工具,它包括两层:数据层和接口层。
数据层实际上就是4个文本文件:“todo.txt”,“done.txt”,“todo.txt.bak”和“report.txt”;接口层包含一个名为“todo.sh”的脚本以及一系列扩展插件。
一、接口层
“todo.sh”脚本作为接口层的主体程序,它支持扩展机制,作者安装的扩展插件列表如下:birdseye,due,edit,graph,lately。
二、数据层
接口层实质上定义了一种DSL语言,数据层的文本文件中的内容都遵循该DSL语言所描述的语法规范。
在数据层的4个文本文件中,以“todo.txt”为核心,故而该GTD工具被命名为“todo.txt”。“todo.txt”文本文件中每行内容都描述了一个“todo项”,它遵循如下语法规范:
1 | (A-Z) todo项说明 due:yyyy-MM-dd @context +project |
以上语法规范中元素含义说明如下表。
元素 | 说明 |
---|---|
(A-Z) | 定义todo项优先级,可选 |
todo项说明 | 描述todo项,必选 |
due:yyyy-MM-dd | 定义todo项截止日期,可选 |
@context | 定义todo项上下文环境,可选 |
+project | 定义todo项所属项目,可选 |
三、操作
3.1、增加todo项
命令如下:
1 | todo add '(A-Z) todo项说明 due:yyyy-MM-dd @context +project' |
3.2、删除todo项
命令如下:
1 | todo del NUM |
其中,“NUM”表示相应todo项在“todo.txt”文本文件中的行号(用来作为相应todo项的序号),可通过todo list
,todo listall
或者todo due
查看命令获得。
3.3、完成todo项
命令如下:
1 | todo do NUM |
3.4、查看
3.4.1、list
命令如下:
1 | todo list [KEYWORD] |
以“todo.txt”文本文件为数据来源。当不带“KEYWORD”,则列出所有未完成todo项;当带有“KEYWORD”,则列出所有内容中含有“KEYWORD”的未完成todo项。
另外,在结果列表中,优先级越高的todo项越靠前,在“A-Z”优先级范围中,“A”优先级最高,“Z”优先级最低。
3.4.2、listall
命令如下:
1 | todo listall [KEYWORD] |
以“todo.txt”和“done.txt”文本文件为数据来源。当不带“KEYWORD”,则列出所有已完成和未完成todo项;当带有“KEYWORD”,则列出所有内容中含有“KEYWORD”的已完成和未完成todo项。
另外,在结果列表中,优先级越高的todo项越靠前,在“A-Z”优先级范围中,“A”优先级最高,“Z”优先级最低。
3.4.3、due
命令如下:
1 | todo due [n] |
以“todo.txt”文本文件为数据来源。当不带“n”,则列出所有定义有截止日期,且截止日期在今天(今天+0)
包括今天(今天+0)
之前的未完成todo项;当带有“n”,则列出所有定义有截止日期,且截止日期在(今天+n)那天
包括(今天+n)那天
之前的未完成todo项。
3.4.4、graph
命令如下:
1 | todo graph [n] |
以“done.txt”文本文件为数据来源。当不带“n”,则列出7天之内每日todo项完成数量统计;当带有“n”,则列出n天之内每日todo项完成数量统计。
3.4.5、lately
命令如下:
1 | todo lately [n] |
以“done.txt”文本文件为数据来源。当不带“n”,则列出7天之内所有完成的todo项;当带有“n”,则列出n天之内所有完成的todo项。
3.4.6、birdseye
命令如下:
1 | todo birdseye |
以“todo.txt”和“done.txt”文本文件为数据来源。基于“上下文环境”和“项目”元素统计todo项完成情况。
3.5、edit
命令如下:
1 | todo edit [done] |
当不带“done”,以默认文本编辑器编辑“todo.txt”;当带有“done”,以默认文本编辑器编辑“done.txt”。
参考文献: [1]http://todotxt.com/ [2]https://github.com/todotxt/todo.txt-cli/releases [3]https://github.com/todotxt/todo.txt-cli/wiki/user-documentation [4]https://github.com/todotxt/todo.txt-cli/wiki/Todo.sh-Add-on-Directory [5]./todo.sh help