Vimでアウトラインを操る VOom

ここしばらく Vimで愛用しているアウトラインプロセッサがvim-scripts/VOoMです。
VOom とは
現在以下のような言語のアウトライン表示に対応しています。
- fmr, fmr1, fmr2
- wiki
- vimwiki
- dokuwiki
- viki
- org
- rest
- markdown
- pandoc
- hashes
- txt2tags
- asciidoc
- latex
- html
- thevimoutliner
- vimoutliner
- taskpaper
- python
- various other
起動方法
使い方は、以下のコマンドで起動できます。
:Voom [言語指定]
起動すると指定した言語に合わせてアウトラインが生成されます。終了するにはqキーです。
言語を指定しないとfmrモードになります。この聞きなれない形式は、VOomの標準のようです。
以下のような形式になります
Level 1 Item1 {{{1
これが最初の項目です。
Level 1 Item2 {{{1
Level 2 Item1 {{{2
Level 2 Item2 {{{2
Level 3 Item1 {{{3
このテキストでVOomを起動すると、このようなノードツリーを生成してくれます。

個人的には、Markdown, HTML, Latex くらいしか使わないと思います。
操作方法
基本的な操作は以下の2つキーで行います。
| キー | 説明 |
|---|---|
| Return | アウトラインに該当する本文を開く |
| Tab | 本文とアウトラインの行き来 |
アウトラインにカーソルがある時にアウトライン行に対して操作を行うと、その操作はそのノードに対して実行されることになります。例えば、ノード上でddとするとノード全体が本文から削除されます。
ノードをSpaceキーをノード上でタイプすると、折りたたんだり開いたりできます。
もちろん、zo,zc,zR,zM などのVimのキーアサインでも可能です。
その他の主なキーマッピングです。
| キー | 説明 |
|---|---|
| i | アウトラインと対応する本文ノードの先頭に |
| I | アウトラインと対応する本文ノードの末尾に |
| aa | 本文ノードを追加 |
| AA | 本文に子ノードを追加 |
| ^^ | ノードを上に移動 |
| __ | ノードを下に移動 |
| << | ノードのレベルを上げる |
| >> | ノードのレベルを下げる |
| yy | ノードのコピー |
| dd | ノードの削除 |
| pp | ノードの貼り付け |
どんな時に使うか
アウトライン・プロセッサはOmniOutlinerも使っていますが、決定的な違いはOmniOutlinerは全ての行は等価で親ノードにも子ノードにもなれますがVOomの方はノードのタイトル行と他の行は明確に区別されます。
まとまっていないアイディアを整理する際はOmniOutlinerを使っています。書いている時点でこれはノードの要素なのかタイトルなのかわからないからです。書きながらレベルを上げたり下げたり統合したり分割したりしながら考えをまとめていく作業では、何が本文になるのかタイトルになるのかわからないのです。
一方、VOomの方は明確にマークアップをしてノードのタイトルとレベルを拾う必要があります。従って、文章の構成が見えてる短い文章を形にするときはVOomを使います。ブログ程度であればVOomで十分かもしれません。また、他人が書いた長文を読む時もノードツリーを作ってくれるの便利です。
Vim使いはぜひ導入しましょう。