I find I'm using a lot of long, hierarchical lists. For hierarchical chapters/sections, navigation is very easy and powerful using vim's folding commands. Is there anything similar for the lists? Something like "jump to first/last/next/prev element", "jump to the next-outermost level", etc.?
So far I've been relying on standard vim navigation (jumping to line numbers, etc.), but there's clearly this structure to the document, and it'd be great to take more direct advantage of it.
Any ideas?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You can search for the list markers or paragraph boundaries and map that to a key. Maybe something like this:
^\(\n\n\+\|\s\+\(#\u\d\|\|.\)\s\)
This should match either paragraphs (which doesn't work that well with that regexp but it's only meant to be an example) or list items. If you want to take into account list levels, you'd have to limit the amount of \s in the second branch of that regexp.
If you find yourself using many lists, you might also want to change the fold method. One of those methods in ftplugin/viki.vim creates folds for list items. It didn't work well though and I cannot remember which one it was. An alternative approach would be to use indent-based folds.
I personally separate groups of list items with an empty line and then use paragraph movements to move between list items.
HTH
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I find I'm using a lot of long, hierarchical lists. For hierarchical chapters/sections, navigation is very easy and powerful using vim's folding commands. Is there anything similar for the lists? Something like "jump to first/last/next/prev element", "jump to the next-outermost level", etc.?
So far I've been relying on standard vim navigation (jumping to line numbers, etc.), but there's clearly this structure to the document, and it'd be great to take more direct advantage of it.
Any ideas?
You can search for the list markers or paragraph boundaries and map that to a key. Maybe something like this:
^\(\n\n\+\|\s\+\(#\u\d\|\|.\)\s\)
This should match either paragraphs (which doesn't work that well with that regexp but it's only meant to be an example) or list items. If you want to take into account list levels, you'd have to limit the amount of \s in the second branch of that regexp.
If you find yourself using many lists, you might also want to change the fold method. One of those methods in ftplugin/viki.vim creates folds for list items. It didn't work well though and I cannot remember which one it was. An alternative approach would be to use indent-based folds.
I personally separate groups of list items with an empty line and then use paragraph movements to move between list items.
HTH