Linuxを日常的に使う実験ブログ

Vim用のMarkdownプラグインmdforvimを改良しました

 2015-10-16

 お知らせ
Vim

こんにちは。今回のテーマは『Vim用Markdownプラグインmdforvimを大幅改良しました』です。公開してからしばらく放置気味だったのですが、なんとか時間を見つけてメンテナンスを再開しました。今回は特にプレビュー部分をテコ入れしましたので記事としてご報告します。 [adsense02] 【目次】 Vimプラグインmdforvimについて Vim用Markdownプラグインmdforvimがもっと使いやすく 今後の予定 感想、バグ報告お待ちしてます

Vimプラグインmdforvimについて

mdforvimって何?

mdforvimなんてvimプラグイン知らないとおっしゃる大多数の方のために簡単に説明しておきます。mdforvimとは筆者が開発しているMarkdown記法を扱うための(ほぼ知名度ゼロの)Vimプラグインです。以下の機能を備えています。

  1. Vimで編集中のMarkdownをHTMLに変換
  2. MarkdownファイルをHTMLファイルとして保存
  3. 編集中のMarkdownファイルのリアルタイムプレビュー

01 インストール方法や使い方はコチラの記事を参照下さい。 ※尚、ファイルの名称や数が変更されているためNeoBandleやVundleではアップデートに失敗する可能性があります。その場合はお手数ですが、一度削除して再インストールをお願いします。

特徴は?

VimでMarkdownを扱う多くの場合perlやpython、javascript等の外部のパーサーに依存してMarkdownをHTMLに変換しています。mdforvimではOSや外部プログラムに依存せず「インストールしたらVimがMarkdownエディタになるプラグイン」を目指してvimscriptで書かれています。探せば同様のプラグインはあると思うのですが見ないフリをしています。

Vim用Markdownプラグインmdforvimがもっと使いやすく

プレビュー機能が向上

mdforvimはもともと個人で使用するvimscriptで書かれたMarkdown/HTMLコンバーターでした。kannokanno氏のprevimにinspireされ急遽リアルタイムプレビュー機能をつけてリリースしたわけですが、「リアルタイム更新だからjavascriptで更新ボタンを連打すれば良いや」という完全な脳筋発想の造りでした。オマケでつけた機能とはいえ酷すぎました。反省しています。毎秒1回リロードするためにブラウザのスクロールができずに、長文になると下が見えない事態に陥っていました。 そこでjavascriptで別のjavascriptを動的に読み込むという、ポピュラーな手法でリロードさせることでスムーズなプレビューを実現しました。尚、プレビューは編集画面がそのままHTMLに変換されるため、いちいち保存する必要はありません。

Windowsでの文字化けに対応

そもそもiconvにて動的に生成されるファイルはutf-8で生成される設計にしておいたのですが、諸々のバグがありWindowsで実行すると日本語が文字化けしてしまう現象が起きていました。修正しましたのでWindowsでも正常に動作すると思います。Windows機保有していないためなかなかテストできないのが辛いところです。

今後の予定

参照型URLへの対応

参照型のURLとは

I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3].

[1]: http://google.com/ “Google” [2]: http://search.yahoo.com/ “Yahoo Search” [3]: http://search.msn.com/ “MSN Search”

I get 10 times more traffic from [Google][] than from [Yahoo][] or [MSN][].

[google]: http://google.com/ “Google” [yahoo]: http://search.yahoo.com/ “Yahoo Search” [msn]: http://search.msn.com/ “MSN Search”

のような書き方です。現段階ではmdforvimは対応できておらず、今後対応させる予定です。

Qiita記法の拡張Markdownへの対応

まずはQiita記法のTable表記などは取り入れていきたいと考えています。現段階ではMarkdown元祖であるJohn Gruber氏のDARING FIREBALLを基本文法として取り組んでいますが、将来的にはCommonMarkへ移行することになるかと考えています。

プレビュー画面の自動スクロール

長い文章を作成する際にはブラウザ画面を手動でスクロールさせる必要があり面倒です。Vim上のカーソルに合わせてブラウザをスクロールさせたいと考えています。

バグとの戦い

この記事を書いている途中で既にHTMLの変換挙動がおかしい部分を発見してしまい残念な気分になっております。

感想、バグ報告お待ちしてます

一人で作成しているので見落としているポイントがあったり、使い勝手が悪い点があったりすると思います。使って頂いた感想をいただけると励みになりますし、改善のアドバイスなどいただけると大変助かります。 ただ、大変メンタルが弱いので「そもそも何でこんなの作った」などの存在否定や人格否定などはご遠慮願います。地味に辛いです。

最後に

まだ完全とは言えませんが、簡単なMarkdown文章作成には威力を発揮するレベルに成長してきていると思います。温かい目で見守っていただければ幸いです。 【関連記事】 VimをMarkdownエディタにするmdforvimプラグインを公開しました [adsense]