One of my challenges (as evidenced by my epic fail with Project52) has been to maintain a list of things to do and getting them done. I’ve tried a number of online services such as remember the milk (RTM), Todoist, and Ta-da List. Each of those are free online services that specialize in creating manageable lists of things to do. Personally, I still use RTM (though only for specific types of tasks) because:
- I can use SMS (through twitter direct messaging) to create tasks
- I get SMS reminders when tasks are coming up
- There’s a cool gmail gadget that I use a lot
Usually the “speific types of tasks” for RTM are those non-specific things that are important but don’t require me to be in front of my pc. things like birthday gift ideas, remembering to call the cable company about my bill, and reminding myself to check out a cool website are all tasks that I want to do at a certain time; but aren’t tied to a specific project/client/job and therefore don’t need to be “in my face” all the time.
“What’s the problem?” you may ask, “These services are more than sufficient to handle even the busiest of schedules and largest task lists!”
I certainly agree with the assertion that those existing tools are sufficient to handle my needs. I would argue, however, that the imposed workflow of those tools are what keep me from fully utilizing them. Imagine this scenario: I’m working on some code (in GVIM, of course)and realize a change needs to be made in a different part of the site
- I open new tab in my browser
- go to my todo list website
- log in (if the site didn’t remember me)
- find the correct list (i keep my lists based on clients and projects)
- add the new item to the list
- resume work
Not sure if that represents how I would always use it; I suppose I could skip the “open new tab, go to website, log in, find list” steps by just doing that part first when I start working on a project. Regardless of whether or not there are ways to make the use of online to-do lists more efficient, I knew that there had to be a way to manage lists of things without leaving the comfort of my favorite editor.
Enter vimwiki (http://code.google.com/p/vimwiki/)
In a nutshell, the above scenario changes a little:
- :tabnew
- \ww
- navigate to the list
- move to list of items i’m working on
- o
- type in new task
- :up
- :tabr
- resume work
While that looks less efficient (9 steps instead of 6) – remember that my hands never leave the keyboard; so there’s no hunting around with the mouse followed by the click-and-wait web experience. I could also save a few steps if I leave the current project’s buffer open in the tab so I only have to switch to it when I need to add an item.
Commands explained:
Creates a new "tab" with an empty buffer
Opens my default wiki page
Navigating between pages is easy with the ENTER and BACKSPACE keys
Insert a new line under the curser and switch to Insert mode
Update (Save) the current buffer
Switch to the first tab
This probably seems more difficult than it needs to be. Why not just have a text file with a list of items that need to be done? I could have one text file for each client/project and be done with it! Here’s where the real power of vimwiki comes into play. Since I’m using wiki syntax to enter the to do items (I also like to take notes into my wiki files and describe requirements,etc), the finished files are then exportable to just about any wiki; so the data becomes portable.
There’s also a feature that lets me publish the wiki content into HTML files that I can view in my browser (if I so desire).
Overall, it took about 5 minutes for me to install, configure, and start using vimwiki with positive results. I’m able to jot down notes and to do items quickly and efficiently and save them in a portable format.