2012年7月29日日曜日

[vim] monday.vimを修正して、datetime形式のインクリメントができるようになった

久々にブログかく。

背景


monday.vimというものがあることを知った。
monday.vim : Ctrl-a、Ctrl-xで曜日、月をループ (+他の用途への応用) 

ctrl+a / ctrl+x で数字だけでなく、曜日や日付をインクリメントできるようにするプラグイン。
これを使えば、ctrl+aで、monday → tuesday → wednesdayと変更していくことができる。
さらにちょっと修正すれば、true → false → true みたいなこともできる。
よくよく見てみると、Vim Advent Calenderでも紹介されているではないか。読んでたけど、スルーしてたっぽい・・・。
monday.vimカスタマイズしてみた


で、ちょっと思った。

 「2012/07/12 23:12:00」 みたいな形式で書いてあるものを、数字としてでなく、
日付や時間としてインクリメントできたら面白いかもと。

やったこと


① インクリメント要素を配列で受け渡す。
Advent Calenderでもやってたけど、すっきりするなと思いパくる。 

② datetimeのインクリメント
カーソル下に「2012/07/12」とか「23:12:00」とかの形があった場合、
それをdatetime型に置き換え、日付 or 秒数を+1/-1して、置き換える。
datetimeを使うために、初めてvital.vimを使った。
Vital.DateTime 書いた

 できたものはここ。 kokukuma/monday

使い方


① 「2012/07/12」とか「23:12:00」とかの上にカーソルを持っていく。
② ctrl+a を押すと「2012/07/13」とか「23:12:01」になる
③ ctrl+x を押すと「2012/07/11」とか「23:11:59」になる

みたいな感じで ctrl+a を押し続けると、日付や時間としてインクリメントされていく。

ToDo


① 日付の対応フォーマットを増やす
今、「2012/07/12」と「23:12:00」以外のフォーマットではできない。。
つまり、「2012/7/12」とか「2012-7-2」とかには対応してない。 対応できるようにする。

② もっと面白い使い方考える。
たぶん日々使っていく中で、同じようなやり方でもっと面白いこと思いつきそうな気がする。