Mac で mkdpreview-vim を使って reST のプレビューを見る
mkdpreview-vim は Markdown記法で書かれたテキストを書きながら、別ウィンドウ上でプレビューも一緒に確認できる便利プラグイン。
Markdown以外に、reST と textile にも対応している。
これを利用してMacOS X 上で reSTructuredTextのプレビューを見てみる。
以下 プレビューを表示するまで。
環境
- MacOS X
pyqtのインストール
- 時間かかるんで最初にインストールしておく。
- 面倒なのでhomebrewでまるっとインストール
$ brew install pyqt
- Qt と sit と PyQT4 を一気にインストールするから、多分 20~30分くらい時間かかる。
- インストールが完了したら、PyQTのある場所にパスを通す。
$ export PYTHONPATH=/usr/local/lib/python
Sphinxのインストール
- reSTをプレビューするためには、docutilsが必要です。Sphinxはdocutilsに依存してるのでpipでインストールすると、Sphinxとdocutilsが一緒にインストールされる。
- なんでわざわざSphinxまで入れるのかというと、Sphinxがデフォルトで持ってるディレクティブを利用したいから。
$ pip install Sphinx
vimプラグインのインストール
- vundleを利用して、必要なプラグインをインストール。vundleが何か分からない人は下記を参照してください。
- .vimrc に下記のように書いて、BundleInstallを実行する。
Bundle 'mattn/mkdpreview-vim' Bundle 'mattn/webapi-vim'
$ chmod u+x ~/.vim/bundle/mkdpreview-vim/static/mkdpreview.py
mkdpreview.vimをいじる。
#変更前 \ "data" : join(getline(1, line('$')), "\n") #変更後 \ "data" : join(getline(1, line('$')), "\n"), \ "type" : 'rst'
注意: 多分そのうち 正式にtypeを指定する方法は変わると思います。
追記(2012/02/13)
- 最新版では type値に関しては、filetypeを自動で読み取って勝手に指定しくれるようになりました。上記修正は必要ありません :)
- 下記のようになってました。
function! s:update_preview() let ret = http#post('http://localhost:8081/', { \ "data" : join(getline(1, line('$')), "\n"), \ "type" : &filetype \}) echo ret.content endfunction
さぁプレビュー
- こんなrstファイルを用意してvimで開く
.. contents:: 目次 The Road of the Drillbits =============================== 第1章 どりるびっつの仲間 --------------------------------- .. code-block:: python print "The Fellowship of the Drillbits" 第2章 二つのどりるびっつ --------------------------------- .. code-block:: python print "The Two Drillbits" 第3章 どりるびっつの帰還 --------------------------------- .. code-block:: python print "The Return of the Drillbits"
- vimを開いて下記コマンドを実行
:MkdPreview!
- するとおもむろにウィンドウが立ち上がりプレビューがこんな感じでみれる!
- 以後は、「:w」で保存すれば勝手にプレビューが更新される。うまく更新されなかったら「:MkdPreview」と打つと良い。
code-blockディレクティブとか使いたい。
- 上の画像では、「.. code-block::」の所で「Unknown directive type "code-block".」という感じで、そんなディレクティブねーよとおこられる
- これはそもそも「.. code-block::」が、docutilsのディレクティブではなく、Sphinxに付属するディレクティブだから。Sphixはインストール済みなので、Sphinx付属のディレクティブが利くようにまたちょっといじる。
「~/.vim/bundle/mkdpreview-vim/static/plugin/mod_rst.py」というファイルを開いて下記のよう2行追加する。
from docutils.core import publish_parts + from sphinx.directives.other import * + from sphinx.directives.code import *
- これでもう一度、ファイルを開き直して、「MkdPreview!」を実行すると、無事にエラーが無くなる
以上おわり。