hnt
そういやかなり前から vim を使ってはてダを書く設定をてろてろ書いていたんだけどまだまとめてなかったことに気付いたのでまとめてみる。
まず local で管理するときに専用の拡張子があると便利というかないと死ぬと思ったので Hatena NoTation の略で hnt という拡張子を使うという my rule を設定。具体的に explorer から選択するだけで編集が可能になるのと ftdetect によって filetype を決定しやすいのが利点。
さてで vim の設定 file 群が以下。
- ftdetect
- http://github.com/januswel/dotfiles/blob/master/vimfiles/ftdetect/hatena.vim
- 前述の拡張子 hnt な file を filetype "hatena" に変更する。
- もひとつ、はてダ上で vimperator から外部 editor を起ち上げたとき ( vimperator で :help i_<C-i> だとか :help 'editor' だとかを参照 ) に自動的に filetype を "hatena" にする。こうするとそもそも local に書き出す必要とかなくなる ( 一応うちでは data lost に備えて local に書いてからそれをコピペという手順を踏んでいる ) とかそうでなくても投稿前に typo を見つけたとか投稿済みの記事の編集とかにちょうべんり。
- ftplugin
- http://github.com/januswel/dotfiles/blob/master/vimfiles/ftplugin/hatena.vim
- 日本語を扱いやすいように 'formatoptions' を変更しているだけ。
- syntax
- http://github.com/januswel/dotfiles/blob/master/vimfiles/syntax/hatena.vim
- はてな記法の全貌がわからないのでどうやっても不完全。
- template
- http://github.com/januswel/dotfiles/blob/master/vimfiles/template/hatena.hnt
- 自前 plugin の autotmpl.vim ( http://github.com/januswel/dotfiles/blob/master/vimfiles/plugin/autotmpl.vim ) で読み込まれる。
- 1 行目の '%:t:r' とか書いてあるのは自前 plugin の expandvar.vim ( http://github.com/januswel/dotfiles/blob/master/vimfiles/plugin/expandvar.vim ) を使って filename から半自動的に title をいれるためのもの。
他にはてダに限った設定ではないんだけど以下を .vimrc に書いておくと local で書いたあとはてダにコピペがしやすい。
if has('gui') || has('xterm_clipboard') | set clipboard=unnamed | endif
- Windows や xterm なんかの clipboard を持ってる system で unnamed register に yank するとき同時に clipboard にも copy する。
- unnamed register てのは単なる yy だとか visual mode で範囲を指定したあとの y だとか y の直後に iw だとか $ だとか G だとかを押すこと。
nnoremap <silent><Leader>y :%yank<CR>
- 現在の buffer のすべての行を yank する。
で、実際に何か書くときは以下の流れになる。
- 適当な directory に拡張子 hnt の file を作る。
- vim 上で :e foo.hnt とかで。
- このときの filename の拡張子を除いた部分が title になるので先に title を決めないとダメだったりする。まぁ何か書くときてのは何かネタがあるときなので title にはあんまり困らない。
- 1 行目の '%:t:r' で expandvar 発動。
- default だと <Leader>ev 。
- 適当に tag を打つ。
- だらだらと書き綴る。
- <Leader>y で全文 clipboard に copy 。
- はてダの「記事を書く」から出てくる textbox に paste ( 「詳細編集モード」 ) 。
- 「プレビュー」で確認 & 校正したあと「保存する」
こんな感じ。