STAFF BLOG スタッフブログ

VIMでMarkdown編集環境を用意してみた

SC_20131203_No-0000

最近、Markdown 形式でメモとってみて、便利さを感じていたのですが
「VIMでMarkdownを編集するのに、快適な環境を作りたい!!」
と思いたち、調べながら設定してみました。

私の環境と要件は以下のようになります。

  • CentOS 6.4 (Tera TermにてSSH接続)
  • Markdownのプレビューを、VIMのウィンドウ内部に表示したい
  • vim-quickrunを使用してプレビューを表示したい

※今回、Markdown parser に kramdown を使用しています。githubとは少し形式が変わりますのでご注意を。

準備

VIM、w3m(ブラウザ)、kramdown(Markdown parser)をインストール

yum install vim

yum install w3m

yum install ruby
yum install rubygems
gem install kramdown

VIM Pluginをインストール

NeoBundleをすでに導入済みであれば、.vimrcに以下を追記すればOKです。

NeoBundle 'thinca/vim-quickrun'
NeoBundle 'yuratomo/w3m.vim'
NeoBundle 'plasticboy/vim-markdown'

vim-quickrunの設定

.vimrc に以下のような設定をしました。

vim-quickrunでの実行結果を出力する先を、ファイルにしています。

let g:quickrun_config = {}
let g:quickrun_config['markdown'] = {}
let g:quickrun_config['markdown']['outputter'] = 'file'
let g:quickrun_config['markdown']['outputter/name'] = tempname() . '.html'

vim-quickrunのhook機能を利用して、実行結果ファイルを作成後に、w3m.vimで読み込みこむようにします。

let t:outputter_w3m_vim_bufname = ''
let s:hook = {
	\ 'name': 'outputer_w3m_vim',
	\ 'kind': 'hook',
	\ 'is_success': 0,
	\ 'config': { 'enable': 1 }
	\ , '_bufname': 'hogeee'
	\}
function! s:hook.on_success(session, context)
	if a:session.config.outputter != 'file' || !match(a:session.config['outputter/name'], '.html$\c')
		return
	endif

	let mode = g:w3m#OPEN_SPLIT
	let target = 'local'
	let fname = a:session.outputter._file
	let bufname = t:outputter_w3m_vim_bufname
	if bufname != '' && bufwinnr(bufname) != -1
		execute bufwinnr(bufname) 'wincmd w'
		let mode = g:w3m#OPEN_NORMAL
		silent call w3m#Open( mode, target, fname )
	else
		silent call w3m#Open( mode, target, fname )
		let t:outputter_w3m_vim_bufname = b:w3m_bufname
	endif
endfunction

call quickrun#module#register(s:hook, 1)
unlet s:hook

vim-markdown は Markdown形式のファイルを ftype=mkd として読み込むため、その対策をします。

let g:quickrun_config['mkd'] = copy(g:quickrun_config['markdown'])

以上で完了です。

使用方法

適当にMarkdownファイルを作成して (README.md などとして) VIMで開き、文章を書いたら、ノーマルモードでキーボード入力 \r をしてください。
vim-quickrunが実行され、Markdownプレビュー用のVIMウィンドウが表示されます。

感想

今回環境を用意していきましたが、それなりに便利に使えています。
まだまだ不満点もあるので、これからも改良していくつもりではあります…。

dotfilesの改良は終わらないですね。

INDEXブログ一覧へ
CONTACTお問い合わせはこちら