用VIM做任务管理工具(一)

起因
我最近想要一个管理任务列表的工具,因为我觉得自己老忘事,还有就是不能很好的安排时间。如果能有一个好用的任务管理工具来帮我管理各种事务的话,会省掉我不少的麻烦。但是什么样的任务管理工具才是我需要的呢?在长达两周的时间里我都在思考这个问题。

我觉得,一个好的任务列表工具首先是要使用方便。如果一个工具给自己带来的麻烦多于好处的话,就得不偿失了。然后,由于我是用来管理日常事务,那么多平台,多设备的支持也很重要了。还有,我希望它的灵活性够好,日常生活有各种琐事,各有特点,我想怎么写就怎么写,想怎么改就怎么改。

现成的工具
微软Office那一套工具我觉得是相当不错的,邮件和Calendar可以满足很多人的需要。但是我觉得这套工具在工作中使用的话还行,作为自己个人使用的话,总感觉有些别手。有时候,你其实就是想简单的去记个事情,看到那一大堆选项,就不想弄了,太麻烦。还有,你想添加一点注释,总觉得不好找地方。还有用其管理任务的话,总会有很多超时的任务,看到自己总是无法完成自己定下的任务,你就不想再去制定任务了:计划总是没有变化快。反正,总之,就是感觉不顺手吧。

如果微软的Office作为一套强大而复杂的工具的代表的话,那么Google Task就应该算是简约派了:就是随意的记个东西,想加个东西就加一个,不会有任何额外的选项来打扰你。想加Notes就点进去加点Notes。如果是个限定时间的事情,也可以加一个Due Date。但是Google Task也有很明显的缺陷,由于其做的很简单,功能就不够强大,而且其致命的缺陷在于:Google的服务经常被各种墙……

还有其他的一些企业级的协作性的任务管理工具,功能都做的很强大,但是新鲜感一过,就觉得成了负担:这种工具通常是网页形式的,你总是要点好几次才到你想要的地方,然后开始改东西。

既然现有的工具无法满足我的需求,于是,作为一个程序猿,我就想自己做一个任务管理器。我认真的分析了实际的情况,发现,这其实真的不是那么容易的一件事情,因为一个任务的流程可能很简单,也可能很复杂。作为一个工具软件,如果你做的太简单了,就无法满足需求,如果你做的太复杂了,用起来就不方便。而且要考虑其跨平台,跨设备……而且设计一款软件的时候,还好充分考虑好数据库的结构的设计,要便于扩展……

任务的设计
先不管那么多,我开始分析一个我心中理想的任务的结构是什么样子的。我列举了几个心中的想法:
1. 做一个任务系统
2. 记得交水电费
3. 读一本书
4. 写两篇博客
列出来后我就意识到了一个问题,如果我把这些作为任务一条条记下来的话,对于我完成这些事情可能会完全没有帮助。因为除了第二点以外,其他的事情都不是什么紧急的事情,有空的话我可能会去做,但是我什么时候才会有空啊?每天上班完了,回家玩一会,就睡觉了,我想我一辈子都不会有空,日复一日,我想我一辈子都不会有空的。我觉得回忆录可以这么写,但是任务列表的话,绝对不行。啊,原来我以前列一些任务总是无法完成,原因大概就在于此了。任务列表其实只是个辅助的工具而已,重要的是我们的计划要作的足够好。如果我把计划稍微改一下:
1. 做一个任务系统:
  • 分析一个任务的基本结构 (3小时)
  • 选择一项合适的技术 (3小时)
2. 记得交水电费
3. 读一本书
  • 选择一个方向 (0.5小时)
  • 选择一本书 (1-2小时)
  • 通读这本书 (3-4小时)
  • 如果需要,精读这本书 (待定)
4. 写两篇博客
  • 选一个题材 (1小时)
  • 写一个草稿 (2小时)
  • 修改草稿,完成博客 (2小时)
这么一分的话,可操作性就变的很强了。如果把这些东西作为一个个任务加入任务列表,我想我很容易就可以完成每一个小点。这个时候,如果有一个用着顺手任务的管理工具,那真的就很是方便了。重新再考虑了一下上面提到的工具,感觉各种缺陷依然存在。看来还是只能自己想办法了。

这个工具要有什么功能
任务设计好了以后,我就来分析一下我想要的工具应该是什么样子的:
  • 任务要有一个状态:未开始,已开始,已完成,失败,取消,等等
  • 任务要有优先级,经过我的仔细衡量,只有:高,中,低
  • 任务会有一些子元素:任务相关的一些信息;任务各个阶段的结果;任务状态的更新
  • 可以方便的进行添加、修改、删除操作
  • 要能通过视觉效果比较明显的区分如上内容
  • 搜索查询功能
  • 够灵活
  • 可以一眼看到所有任务的状态
然后再总结了一下我想做的工具的一些原则和方向:
  • 1. 能够有效的跟踪记录任务
  • 2. 尽量简单
工具的实现
根据以上的需求,在仔细分析以后我发现,靠!纯文本居然可以满足大部分的需求。除了其中一点:通过视觉效果明显的区分各种状态。而我刚好知道,VIM可以做到这一点。哈!只需要定义一些简单的格式,一个近乎完美的任务列表就做出来了,就像这样:
- 高优先级任务
-- 一般任务
--- 低优先级任务
             - 一个任务的子项,额外的信息
done - 一个完成的任务
             - 任务的阶段性成果
             - 任务的最终结果
虽然看起来很简单,但是用起来真的不错。不管是用于工作任务的跟踪记录,还是日常事务的跟踪记录,都是相当有效的。而且,由于你可以一眼看到所有任务的状态,当你手上事情做完以后,你可以根据情况挑选当下最合适的事情来做。纯文本的灵活性,我就不想多说了,随便改!

现在做出来在只是最初的版本,再进行一些优化的话,就可以处理很多更复杂的情况了。

等有时间再来写写具体是如何用VIM来做的。

你可能感兴趣的:(用VIM做任务管理工具(一))