Vimでいい感じにMarkdownを書く

理想のMarkdown編集環境を求めて

f:id:yuhei_kagaya:20150605114815p:plain

ブログやQiita::Teamへの投稿はMarkdownで書いている。
Markdown中にコードやコマンドを貼り付けることがよくあるのだけど、iTerm + tmux + vimCUI環境で開発しているので、MarkdownもVimで書けたら便利だなぁと思っていた。

課題

MarkdownをVimで気持ちよく書くためには、この辺が気になっていた。

  • リストのインデント
  • リストの操作
  • タスクリストの簡単入力、チェックをつける操作
  • コードのシンタックスハイライト
  • プレビュー
  • 見出しのアウトライン表示

このうち、プレビューとアウトライン以外の機能を満たすMarkdown用の設定や関数を集めたVimプラグインを作った。なかなか快適。

github.com

Markdownのプレビュー

previmが最高。:PrevimOpenとコマンドを実行するだけで、Makdownのプレビューがブラウザで確認できる。

github.com

見出しのアウトライン表示

普段、コードを書くときのアウトライナーtagbarを使っているので、Markdownを編集中もTagbarでアウトライン表示したい。

github.com

Home · majutsushi/tagbar Wiki · GitHub にMarkdownをTagbar連携するやりかたが載っている。
ctagsを使うやりかたより、markdown2ctagsを使ったほうが見出しのネストに対応して直感的な表示になるので好みだった。

設定まとめ

次のような設定で、気持ちよくMarkdownが書ける環境になる!

NeoBundle 'kannokanno/previm'
NeoBundle 'majutsushi/tagbar'
NeoBundleFetch 'jszakmeister/markdown2ctags'
NeoBundle 'violetyk/iikanji-markdown.vim'

let g:tagbar_type_markdown = {
    \ 'ctagstype': 'markdown',
    \ 'ctagsbin' : $HOME . '/.vim/bundle/markdown2ctags/markdown2ctags.py',
    \ 'ctagsargs' : '-f - --sort=yes',
    \ 'kinds' : [
        \ 's:sections',
        \ 'i:images'
    \ ],
    \ 'sro' : '|',
    \ 'kind2scope' : {
        \ 's' : 'section',
    \ },
    \ 'sort': 0,
\ }