Vim - 依存ツールなしにMarkdownプレビューできるprevimプラグインを作った
previmというのを作りました。
作った経緯と、本プラグインの特徴を書きます。
既存のVim + Markdown環境は外部ツールが必要なものが多い
Vim + Markdown環境は好みが別れるのか、色々とあります。
quickrun + 何かしらの変換ツール
Hack #230: Markdown形式の文書を書く2 (quickrun0.5.0対応版)
- 上記リンクにある何かしらの変換ツールが必要
mkdpreview-vim
Vimで編集中のMarkdownをプレビュー出来るプラグイン書いた
- 上記リンクにあるいくつかのツールが必要
instant-markdown-d
VimでMarkdownをGitHub風にリアルタイムプレビュー
- Rubyが必要
- Node.jsが必要
Marked(Mac用)
vim-quickrunとMarkedでmarkdown編集が快適になった
- 専用アプリが必要
Kobito(Mac用)
- 専用アプリが必要
Vimに絞って検索してみるとこれだけあります。
私の知らないだけでもっとあるかもしれません。
ただ私が調べたところだと、どれも外部ツールに依存していました。
PythonしかりRubyしかりNodeしかりHaskellしかり。
外部ツールのインストールなしだと、以下もあります。
Markdown Previewer
楽して Markdown ファイルをリアルタイムプレビューできる仕組みを作ったった
Markdown Previewer
これはドラッグアンドドロップでファイルを渡すと、それ以降はローカルの編集と同期してリアルタイム更新されるものです。
サービスですので特別インストールが必要なものもありません。
とても素晴らしかったのですが、「ドラッグアンドドロップする」というのが個人的にはかなり面倒でした。
ということで乱立している状況でもう一つ、勢いでオレオレプラグインを作りました。
previmプラグインの特徴
いいところ
まず、Vimだけで完結します。
必要な外部ツールはありません。open-browser.vimを使うことが出来ますが、必須ではありません。
あとはリアルタイムプレビューっぽく動きます。
厳密には「最大1秒以内に同期を取って自動で反映します」。
ダメなところ
CSSが微妙で、Githubなどのような綺麗なスタイルにはなっていません。
全く何もないのも見にくかったので、気休めにTwitter Bootstrapを当てています。
次に、スクロールするためにブラウザにフォーカス戻して動かすのが面倒です。
1画面に収まる程度ならいいのですが、長くなってしまうとリアルタイムプレビューの意味がなくなっています。
ここは一応思い付きはあって、Vim上からスクロールできるんじゃないかという気もしているんですが、面倒でまだ試していません。
※追記ここから
画面最下部だったらスクロールする、というのはjs側で簡単に対応できる気がしてきた。あとでやろう
文字コードをちゃんと意識する- => 1.1 で対応しました
※追記ここまで
動作確認
今日作ってさらっと動かした程度ですので、全然検証はできていません。
自分のMac環境なら動くのを確認していますが、WindowsとLinuxがどうかは分かりません。
Google Chromeを使う場合の注意
※追記ここから
6/16:対応しました。
Vim - previmがGoogle ChromeとOperaに対応
※追記ここまで
READMEにもヘルプにも書いてありますが、Chromeに関してはそのままでは動きません。
プレビュー用のブラウザを指定できるので、Chrome以外を使うのがいいと思います。
動かない理由はChromeのSame-Origin-Policyのせいです。
同期反映のためにローカル(file://)のjsを読み込もうとするのですが、それがエラーになります。
参考:Javascript: Same origin policy を回避する
おわり
問題等があればissueでも@kanno_kannoにでもお気軽にお願いします。