ひよっこ。

I want to…

Posts Tagged ‘w3m’

vim+w3mでreStructuredTextの環境を構築する

Posted by hikaruworld : 2012 6月 10

reStructuredText便利です。はい。
文章を書くときは、これとsphinxで構成するケースが多いです。

ところで便利なreSTなんですが、出来上がりをリアルタイムで確認するようなモノがないのが残念なところです。
Windowsだとrsteditというエディタ&ビューアがあるのですが、
私の環境はMac or Ubuntuなので無理ぽ。
それと自分は、reSTの編集は基本vimですし。

という訳で、何かないかなーと思って探しているとrestviewというものを見つけました。
A ReStructuredText viewerと書いてあるようにシンプルなreSTのビューアのようです。

これとw3m(テキストブラウザ)を使ってvim上でreSTのリアルタイムプレビューできる環境が構築できたので、
忘れないようにログを残しておきます。

必要なもの

エディタとしてvim、ビューアとしてrestviewをバックグラウンドで動かしてw3mで結果の確認を行います。
vimはMacデフォルトの物を使用、
w3mはbrewから。

brew install w3m

restviewはpipでインストールします(要Python)

pip install restview

あと、vimからw3mを参照するのに、w3m.vimというプラグインがあるので導入しておきます。

restviewの起動

編集したいreSTファイルのカレントディレクトリで、

restview -l 9999 .

でrestviewを起動します。-lで任意のポートを指定できます。
これで、カレントディレクトリをrestviewが監視してくれ、
更新された場合にhttp://localhost:9999で変更内容が随時コンパイルしなくても確認できます。

vimの設定

.vimrcに保存時と監視時の設定を組み込みます。


function! RestWatch()
	" TODO バックエンドで起動する
    " !restview -l 9999 . &
    " TODO 事前にプロセスとwindow情報を確認する。今は固定
    " let restview_pid = !pgrep -n -f restview
    " echo !lsof -Fc -a -i -p restview_pid
    :W3mSplit http://localhost:9999
    :wincmd L
endfunction

function! RestW3mReload()
    :wincmd w
    :W3mReload
    :wincmd w
endfunction

command! -nargs=0 RestWatch call RestWatch()
command! -nargs=0 RestReload call RestW3mReload()

autocmd BufWritePost *.rst silent call RestW3mReload()

エラー処理などしていないので思いっきり雑ですが(汗….
# まぁ、その辺は後でやるとして

RestWatchでsplitでw3mを立ち上げてプレビュー画面を立ち上げます。
RestW3mReloadをautocmdに指定する事で、*.rstを保存したタイミングでw3mを再描画しています。

これで、viewで確認しつつvimで書く事が出来るようになりました。
毎回ブラウザ確認するのに比べたら随分快適です。

以上です。

Posted in program | タグ: , , | Leave a Comment »