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使いはぜひ導入しましょう。


Comments !