0%

GTD工具:todo.txt

本文介绍一种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项”,它遵循如下语法规范:

(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项

命令如下:

todo add '(A-Z) todo项说明 due:yyyy-MM-dd @context +project'

3.2、删除todo项

命令如下:

todo del NUM

其中,“NUM”表示相应todo项在“todo.txt”文本文件中的行号(用来作为相应todo项的序号),可通过todo listtodo listall或者todo due查看命令获得。

3.3、完成todo项

命令如下:

todo do NUM

3.4、查看

3.4.1、list

命令如下:

todo list [KEYWORD]

以“todo.txt”文本文件为数据来源。当不带“KEYWORD”,则列出所有未完成todo项;当带有“KEYWORD”,则列出所有内容中含有“KEYWORD”的未完成todo项。
另外,在结果列表中,优先级越高的todo项越靠前,在“A-Z”优先级范围中,“A”优先级最高,“Z”优先级最低。

3.4.2、listall

命令如下:

todo listall [KEYWORD]

以“todo.txt”和“done.txt”文本文件为数据来源。当不带“KEYWORD”,则列出所有已完成和未完成todo项;当带有“KEYWORD”,则列出所有内容中含有“KEYWORD”的已完成和未完成todo项。
另外,在结果列表中,优先级越高的todo项越靠前,在“A-Z”优先级范围中,“A”优先级最高,“Z”优先级最低。

3.4.3、due

命令如下:

todo due [n]

以“todo.txt”文本文件为数据来源。当不带“n”,则列出所有定义有截止日期,且截止日期在今天(今天+0)包括今天(今天+0)之前的未完成todo项;当带有“n”,则列出所有定义有截止日期,且截止日期在(今天+n)那天包括(今天+n)那天之前的未完成todo项。

3.4.4、graph

命令如下:

todo graph [n]

以“done.txt”文本文件为数据来源。当不带“n”,则列出7天之内每日todo项完成数量统计;当带有“n”,则列出n天之内每日todo项完成数量统计。

3.4.5、lately

命令如下:

todo lately [n]

以“done.txt”文本文件为数据来源。当不带“n”,则列出7天之内所有完成的todo项;当带有“n”,则列出n天之内所有完成的todo项。

3.4.6、birdseye

命令如下:

todo birdseye 

以“todo.txt”和“done.txt”文本文件为数据来源。基于“上下文环境”和“项目”元素统计todo项完成情况。

3.5、edit

命令如下:

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
您的支持将鼓励我继续分享!