VOoM (Vim Outliner of Markups) is a plugin for text editor Vim that turns Vim into a two-pane outliner.
Description and download page: http://www.vim.org/scripts/script.php?script_id=2657
This page is for screenshots.



default outline layout

Default outline layout after the command :Voom. Outline window (Tree buffer) is on the left.

VOoM help ("doc/voom.txt") is written as an outline, as shown in this screenshot. Note that it uses non-default fold markers. Otherwise, it's a standard Vim help file. Command :Voomhelp opens this help file as outline in a new tabpage.



moving group of nodes up

This is animated GIF, see full-size image (17 sec, 102 KB).

VOoM can perform standard outline operations typically found in an outliner program: Insert New Headline, Move nodes Up/Down/Left/Right, Copy/Cut/Paste, Sort in various ways. In addition, outline operations can be applied to a group of sibling nodes in the Visual selection.

This animation shows moving sibling nodes 'AA' and 'BB' Up: the two nodes are selected in the Tree buffer using Visual mode and then Ctrl-Up is pressed repeatedly (or ^^, or <LocalLeader>u). Note that outline operation Move Up is automatically applied to subtrees, that is to top level nodes and all their descendants.



reStructuredText, Markdown, txt2tags, AsciiDoc, Org-mode, wiki, LaTeX, etc.

Command
:Voom rest
creates outline from reStructuredText (reST) section titles. This screenshot shows outline of the source for reStructuredText specification available here. All major outline operations are supported and can be used to rearrange document sections.

VOoM was originally written to work with start fold markers with level numbers, which is one of Vim's built-in folding methods and is a versatile outline markup.

The current version can handle a variety of markups, including several popular lightweight markup languages. These markups have headlines (also called headings, headers, section headers, titles) and thus support an outline structure. VOoM can work with headlines in the following formats:

NOTE: By default, the :Voom command without an argument creates outline from lines with start fold markers with level numbers. To outline another format, an argument specifying the desired markup mode must be provided.
For a Markdown (MultiMarkdown, Pandoc) file:
    :Voom markdown
For an Orgmode file:
    :Voom org
And so on. There is argument completion -- type ":Voom " and press <Tab> or <C-d>.
See also help for g:voom_ft_modes and g:voom_default_mode.




Python Log buffer

The Python Log buffer, __PyLog__, is created by the command :Voomlog. When present, Python stdout and stderr are printed to it instead of on Vim command line.

The __PyLog__ buffer is modeled after the log pane of Leo outlining editor. The Vim tab page in the screenshot emulates the default layout of Leo panes: tree pane (top left), log pane (top right), body pane (below).

Several other VOoM features were inspired by Leo:
  • The :Voomexec command is like Leo's Execute Script command when executed in a node which contains the @others directive. Currently, Vim and Python scripts can be executed this way. (A Python file with code snippets organized via fold markers, plus the command :Voomexec, plus the PyLog buffer is an alternative to running Python's interactive interpreter.)

  • Outline operations Mark/Unmark are modeled after similar Leo commands.

  • VOoM can save which nodes in the Tree are expanded/contracted and which node is the selected node. The difference from Leo is that this is done manually via Tree-local commands and mappings (:[range]VoomFoldingSave, :[range]VoomFoldingRestore).



Voomgrep and Voomunl

The command line area shows output of the command :Voomunl.
It is UNL (Uniform Node Locator) of node under the cursor. (The term is from Leo's unl.py plugin.) An UNL is like a path to the node. It lists headlines of all ancestor nodes.

The Quickfix window shows output of the command :Voomgrep.
It is like :vimgrep followed by :copen, but instead of showing matching lines it shows matching nodes and their UNLs. In this Vim script file, nodes are mostly functions. So, executing
:Voomgrep some_name
produces list of functions in which "some_name" is used.

The command :Voomgrep can also perform boolean AND and NOT searches.



bookmarks, notes organizer

A two-pane text outliner makes an excellent organizer of bookmarks and various notes.

Vim can be configured to highlight URL links (http://..., ftp://..., file:///...) and to launch them with mouse clicks or other keys. Several Vim plugins show how to do that, e.g., utl.vim.

The command :Voomgrep is handy for finding data in a large, database-like outline, especially when there is a tagging system.

Since VOoM is not a "filetype" plugin, it should be compatible with almost any plain text note-taking format.



console Vim

Tree buffer and PyLog buffer in console Vim on Windows. VOoM works with console Vim just as well as with GUI Vim. It should even be usable when 'compatible' is set.



Linux

Linux, GUI Vim, looking at netrw.vim. PyLog buffer is open below. Another screenshot is here.

The VOoM plugin is cross-platform. It should work on any system with Python 2.x and vim/gvim compiled with the Python interface.



This website is on GitHub: github.com/vim-voom