Simple TODO list plugin for Vim, inspired by
I was using workflowy for a long time, then picked up vim and after learning some basic usage I decided it was the superior way to edit text and navigate documents.
I wanted the same navigation in workflowy, so I looked around and found vimflowy Initially I wanted to use vimflowy and implement additional functionality there, but I gave up on the idea.
I used workflowy tags with dates to mark due dates and search engine to display
tasks to be done for particular days. Typing whole #2017-05-08
is a pain in the ass,
so I wanted shortcuts (something like today
which would get translated to #YYYY-MM-DD
format)
I turned towards workflowish ! And decided to fiddle with vim to get something done that would fit my needs :)
To make this work like workflowy in vim you only have to learn to work with vim folding
and vimgrep
and quickfix
...
Thanks to the long running tradition, workflowish files have .wofl
extension.
- searching (Vim is pretty good at it)
- deleting (as above)
- split windows in vim makes it easy to organize big lists
- vimgrep for filtering lines
- folding and a
zoom/focus
modezq
to focus on current item / toggle offzp
move focus to parent itemza
toggles folding. See Vim wiki: Folding
- convert from workflowy plain text export
- in a
.wofl
file or after:set ft=workflowish
, run:call workflowish#convert_from_workflowy()
to convert the whole buffer
- in a
- vimgrep shortcut (
:G
) that greps current buffer, based on a great plugin VimGrepBuffer - notes (just add
\
in the beginning of the line to start a comment) - todos:
- a todo which is not completed is a line which starts with
*
- completed todo starts with a
-
:Done
/:D
command marks line as done (changes first character to-
):Task
/:T
command marks line as task (changes first character to+
):Note
/:WN
command marks line as regular dot (changes first character to*
)
- a todo which is not completed is a line which starts with
this is the basic convention: task date is marked by tags in #YYYY-MM-DD
format
shortcut commands for NORMAL
mode:
:Today
adds current date #YYYY-MM-DD
tag at the end of current line
:Tomorrow
adds tomorrow #YYYY-MM-DD
tag at the end of current line
:Do <offset>
adds a #YYYY-MM-DD
for today + (note, if offset is '-1' it will add yesterday's date)
:Undo
/:U
removes #YYYY-MM-DD
from the end of current line
:TodoToday
/:TT
uses :G
to look for #YYYY-MM-DD
tags for current date
:TodoTomorrow
/:TTr
uses :G
to look for #YYYY-MM-DD
tags for date of next day
:Todo <offset>
uses :G
to look for #YYYY-MM-DD
tags for date offset by from today
Projects are dots which have a dot and their first child (the line directly below them without any notes) is + actions
.
Project actions are dots that are direct childs of the + actions
. Actions marked by -
are considered done.
:A
will show all not done actions per project (first project name, then actions):P
will show all projects
Use Tim Pope's Pathogen. or vim plug
This is not necessary for most users, but if you're a perfectionist you can do it. Add this to your .vimrc to fix an edge-case with folding single-items:
autocmd BufWinLeave *.wofl mkview
autocmd BufWinEnter *.wofl silent loadview
MIT (c)