reStructuredText(reST)を編集するvim環境(Windows)
目的
Windows端末上で、vimを使ってreStructuredTextで文章を書く環境を作成する。
検討
vimに、reStructuredTextで編集するのに便利なプラグイン等を導入することを検討する。
- プラグイン候補
大は小を兼ねるということで、とりあえず、riv.vimを導入してみる。
合わせてプラグイン管理も導入する。
今は、neobundleが流行っているらしいので、これにしよう。
その際、gitも必要になるので、合わせてインストールする。
また、vim上で編集中のreStructuredText形式のファイルをすぐにプレビューできたほうがよい。
なので、html形式に変換してブラウザでプレビューできる環境を整える。
reST形式から、html形式への変換には、Docutilsを使う。
インストール資材
- git
- あんまり汚したくないので、ポータブル版のmsysgit(1.8.4)を利用する。
- https://code.google.com/p/msysgit/
- PortableGit-1.8.4-preview20130916.7z
- vim
- Vim version 7.3 香り屋版を利用する。
- http://www.kaoriya.net/software/vim/
- vim74-kaoriya-win64-20130901.zip
- neobundle
- riv.vim
- reST用プラグイン
- https://github.com/vim-scripts/rest.vim
- Python
- 2.x系を利用する。(64bit版)
- http://www.python.org/
- Docutils
- 最新版(0.11)を利用する。
- http://docutils.sourceforge.net/
- docutils-0.11.tar.gz
- Pygments
- プレビュー時のハイライトのために入れておく。
- https://pypi.python.org/pypi/Pygments
- Pygments-1.6.tar.gz
インストール
- gitのインストール
- 解答して、binにPathを通す。
- vimのインストール
- 解凍して、完了。
- neobundleの導入
- riv.vimのインストール
- neobundleを使ってインストール。vimrcに追加するだけ。
- Pythonのインストール
- インストーラでインストール後、Pathを通す。
- Docutilsをインストール
- > python setup.py install
- Pygmentsをインストール
- > python setup.py install
※Pythonのeasy_installが利用できるなら、
> easy_install docutils > easy_install pygments
でよい。
~/_vimrcには、以下を追記する。
なお、gitコマンドが、なぜか環境変数のPathに追加するだけでは、vimから実行できなかったため、ここでPathに追加している。
ポータブル版にした影響か?
let $PATH = $PATH . ';$GIT_HOME\bin' set nocompatible filetype off if has('vim_starting') set runtimepath+=~/vimfiles/bundle/neobundle.vim/ endif call neobundle#rc(expand('~/vimfiles/bundle/')) NeoBundle 'Shougo/neobundle.vim' NeoBundle 'Rykka/riv.vim' filetype plugin on filetype indent on
reST用プラグインの利用
vimを使って、reSTで文章を記載する際、モードラインを利用して、切り替える。
そのために、文頭or文末に以下を追加する。
# vim:set ft=rst:
あとは、riv.vimのマニュアル参照。
プレビューの利用
riv.vimでは、Docutilsを利用して、htmlに変換後、ブラウザで表示する機能が用意されている。
が、Windows7上に構築したこの環境では、エラーになり、うまく行かなかった。
どうやら、Docutils(rst2html.py)でhtmlに変換するところでエラーになっている様子。
とりあえず、以下のように修正することで、なんとか動くようになった。
修正ファイル
~\vimfiles\bundle\riv.vim\autoload\riv\publish.vim
修正前↓(171-173行)
call s:sys( exe." ". style ." ". args ." " \.shellescape(input) \." > ".shellescape(output) )
修正後↓
call s:sys( exe." ". style ." ". args ." " \.shellescape(input) \." ".shellescape(output) )
さらに、ブラウザ呼び出し部分でもエラーになったので、そこも合わせて修正。
修正前↓(248-250行目)
else call s:sys(g:riv_web_browser . ' '. shellescape(out_file) . ' &') endif
修正後↓
else call s:sys(g:riv_web_browser . ' '. shellescape(out_file) ) endif
最後に、riv.vimのdefaultの表示用ブラウザが、Firefoxになっているので、Chromeに変更するため、_vimrcファイルに追加する。
"--------------------------------------------------------------------------- " riv let g:riv_fold_level = 1 let g:riv_web_browser = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"' let g:riv_temp_path = 0 let g:riv_html_code_hl_style = "friendly"
ついでに、ちょこちょこと設定している。
あとは、
:Riv2HtmlAndBrowse
とすれば、編集中のreSTファイルをブラウザでプレビューすることができる。
なお、riv.vimを利用しなくても、Docutilsを利用して、htmlに変換しブラウザで表示するような関数を定義してやれば、プレビューは可能。
例えば、
~\vimfiles\bundle\riv.vim\ftplugin\rst\riv.vim
に、以下のようにすれば良い。
(引用元:http://www.hexacosa.net/blog/detail/41/)
python << EOF from docutils.core import publish_file import os import tempfile import time import webbrowser import vim def Rst2Web(): src_fo = open(vim.current.buffer.name) dst = tempfile.mkstemp(suffix='.html') dst_fo = os.fdopen(dst[0], 'w') dst_filename = dst[1] print dst_filename out = publish_file(src_fo, '.', dst_fo, '.', writer_name='html') webbrowser.open(dst_filename) time.sleep(3) os.remove(dst_filename) EOF ca rst2web :py Rst2Web()
この場合は、実行時に
:rst2web
とすれば良い。
最後に
これで、vimのreST用プラグインの導入と、プレビュー環境の構築が完了。