用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來做的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章