これはすごい
speeddating.vim - Use CTRL-A/X to increment dates, times, and more : vim online
なんと
- 2008-01-31 11:51:31
- I,II,III,IV,V
- 3rd,4th
等いった日付、時刻、数字表記に対して<C-A>や<C-X>で値をインクリメント/デクリメント出来る様にするという凄いスクリプト。
試しに2008-01-31 11:51:31の51の所で30分繰り上げる為に「30<C-A>」とした所、
2008-01-31 12:21:31
と時間まで動くじゃないですか!!!
スバラシス...
そのままでも素晴らしいのですが、このスクリプトの素晴らしいのは、拡張出来る所。例えば
~/.vim/after/plugin/speeddating_japanese.vim
scriptencoding utf-8
SpeedDatingFormat %Y年%m月%d日 %H時%M分%S秒
let s:japanese_number = '0123456789'
function! s:japanized_number(string,offset,increment)
let n = tr(a:string, s:japanese_number, '0123456789') + a:increment
return [tr(n, '0123456789', s:japanese_number), -1]
endfunction
function! s:function(name)
return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\d\+_'),''))
endfunction
let g:speeddating_handlers += [{'regexp': '-\=\<[1234567890]\+\>', 'increment': s:function('s:japanized_number')}]
こんなファイル用意すれば、先ほどと同様に
2008年01月31日 11時51分31秒
の51の所で「30<C-A>」とすれば
2008年01月31日 12時21分31秒
となってくれるのです。
さらに↑の拡張スクリプトでは、全角数字の上で<C-A>/<C-X>するとインクリメント/デクリメント出来る様にする処理が入っていますので、「550」<C-A>を押下すると「551」とインクリメントされます。
素晴らしい。
あー、豚まん食べたくなってきた。