rcmdnk's blog
Last update

20141030_markdown_200_200

VimでのMarkdown環境を整える でやったVimのMarkdownのハイライトの更新について。

Fork元の方で更新があったのでそれを取り入れたのと、 codeblock部分でのハイライトを別に移しました。

vim-markdown

このプラグインでVim上でMarkdownのハイライトを行っています。

このレポジトリは plasticboy/vim-markdown をフォークしたものですが、 以下の様な変更をしてあります。

  • filetypeをmkdからmarkdownに変更。
    • プラグインの中でmarkdownだけをマークダウンのfiletypeとして 見るものもあるため。
  • xxx.md.oldxxx.markdown.tmpといったものもmarkdownとして認識。
  • シンタックスハイライトについて
    • スペルチェックの有効化。
    • (XXX)みたいな括弧だけの時にもURLになってしまうのを回避。
    • HTMLのハイライトの有効化。
    • インラインURLの改善。
    • コード部分の区切りを中のコードの色と区別。
    • LiquidTag({% ~ %})の導入。
    • PHP Markdown Extraの~~~によるコードブロックの導入。

ただし、上の中でスペルチェックについてと(XXX)の括弧だけの場合にもURLに なってしまう問題は最近のアップデートでフォーク元でも直った様です。

他にも細かい所が治っていたり、 yamlブロックを別途ハイライト出来る様になったり、 テーブルを作ったりするコマンドが追加されてたり、 ユニットテストとか導入されてたりしたので その辺を貰ってきて追加してあります 1

以前はコレに加えて joker1007/vim-markdown-quote-syntax で行われているコードブロック内の言語別のハイライトも vim-markdownの中に入れていましたが、 今回これを外して直接このプラグインを使うようにしました。

このプラグインの中では3点バックチックのコードのみ扱われているので、 これにLiquidやOctopress、またPHP Markdown Extraのコードブロックも 使える様に変更を加えてアップデートしたものをPull Requestに出しています。

まだ反映されてないので、取り敢えず自分のフォークした方を使います。

追記: 2014/11/11

本家に反映してもらったのでそちらをどうぞ。

追記ここまで

以前vim-markdownに入れてた段階では、Octopressのコードブロックでは lang:cppみたいにlangを入れないと反映されませんでしたが、 {% codeblock test.cpp %}みたいにタイトルに拡張子付きのファイル名 を入れるだけでも反映するようにしました。 (Octopressで変換するときにはファイル名だけでも変換してくれるので。)

また、以前はJavaについて有効化するとスペルチェックが殆どの場所で 効かなくなってしまってたので無効化してましたが、 下のJavaのシンタックスファイルの中でやってる

syntax spell default

が悪さをしていて(というかJavaの時にはそういう意図があって)、 これを上のプラグインの中で一旦読んだ後に

syntax spell toplevel

することで治せました。

Javaのファイルを読んでる時にスペルチェックを有効にしたい場合には 同じようにこのコマンドを呼べば出来ます。 (ただ、下のファイルのコメントにもあるように識別子とかほとんどをスペルチェックしてしまうので やはりJavaのファイルの編集時に全部だと邪魔臭いかも。)

java.vim - vim - Vim - the text editor - Google Project Hosting

使い方は NeoBundle を使っているなら

.vimrc
1
2
3
4
" Markdown syntax
NeoBundle "godlygeek/tabular"
NeoBundle "joker1007/vim-markdown-quote-syntax"
NeoBundle "rcmdnk/vim-markdown"

な感じで。 godlygeek/tabular はテーブル作成用のプラグインで、 vim-markdownの中で:TableFormatというコマンドで これをラップする形で使っています。 (README参照。)

さらに、下の様な設定をしておくと便利です。

.vimrc
1
2
3
4
let g:vim_markdown_liquid=1
let g:vim_markdown_frontmatter=1
let g:vim_markdown_math=1
au BufRead,BufNewFile *.{txt,text} set filetype=markdown

liquidタグに関してはrcmdnk版で入れた物でデフォルトで有効になってるので 敢えて入れなくても反映されます。(無効にしたいときには0に)

g:vim_markdown_frontmatter1にすると先頭のYAMLブロックをきちんと YAMLとしてハイライトしてくれるのでLiquid/Octopressを使うときには 非常に便利です。

以前まではブロックの最後に---があって、これがMarkdownのタイトルの マークアップと勘違いされてブロックの最後の行がMarkdownのタイトルとして ハイライトされてしまったりして気持ち悪いのでわざわざ一行開ける、 みたいなこともしてましたが、 今回のアップデートでこれも解決します。

g:vim_markdown_mathはLatex的な$x=y$とかをハイライトしてくれます。 Latexの数式の書式をサポートするMarkdownパーサーとかも出てきたので その辺の対応だと思います。 特にその辺使って無ければ有効にしてもあれですが、有効にしておいても 特に問題は出ないと思います。

それから、*.txtとかのファイルにもちょっとMarkdownっぽく書くこともあるので *.txt*.textファイルの場合もMarkdownとして扱う様にしています。

以下はこれらを試してみたもの。

新しいrcmdnkのSyntax

スペルチェックの所は手元のターミナルでは下線が付いてるんですが、 :TOHtmlではなぜかこれだけ反映されずに付いてません。。。 (ターミナルでやる限りは上手く行ってます。)

今回のアップデートでは

  • YAMLブロックの部分をハイライト出来る様になったことと
  • Octopressのコードブロックでファイル名だけで反映できる様になった所

が特に嬉しいところです。

プラグインのアップデートが上手くいかない場合はこちらを参照:

VimでNeoBundleのアップデートに伴いプラグインのデフォルトブランチをmasterに変更

Sponsored Links
  1. 本家の方にPull Requestを出して、とかも考えてますが、 filetypeは恐らく変更されないのと、 htmlのコードハイライトとかも敢えて消してたりするので こちらのやってることを全部入れてもらうのは難しそうだな、とも。

Sponsored Links

« VimでNeoBundleのアップデートに伴いプラグインのデフォルトブランチをmasterに変更 Yosemiteの高速化等 »

}