もた日記

くだらないことを真面目にやる

Vimメモ : vim-speeddatingで日時をインクリメント/デクリメント

インクリメント/デクリメント


Vimでは<C-a>でインクリメント、<C-x>でデクリメントができる。例えば、ノーマルモードで1の上にカーソルを置いて<C-a>を押すと2になり、<C-x>を押すと1に戻る。5つインクリメントしたい場合は5<C-a>のように数値を入力してから実行する。
この機能は日時フォーマットには対応していないので、1999-12-3131の上にカーソルを置いてインクリメントすると2000-01-01にならずに1999-12-30になる(-31と解釈されているため)。

vim-speeddating



github.com

vim-speeddatingというプラグインをインストールすると、日時フォーマットもインクリメント/デクリメントできるようになる。デフォルトで対応しているフォーマットは以下の通り(プラグインインストール後に:SpeedDatingFormatコマンドで確認可能)。

  1 %i, %d %h %Y %H:%M:%S %z         Sat, 26 Mar 2016 07:45:49 +0000
  2 %i, %h %d, %Y at %I:%M:%S%^P %z  Sat, Mar 26, 2016 at 07:45:49AM +0000
  3 %a %b %_d %H:%M:%S %Z %Y         土  3月 26 07:45:49 UTC 2016
  4 %a %h %-d %H:%M:%S %Y %z         土 Mar 26 07:45:49 2016 +0000
  5 %h %_d %H:%M:%S                  Mar 26 07:45:49
  6 %Y-%m-%d%[ T_-]%H:%M:%S %z       2016-03-26 07:45:49 +0000
  7 %Y-%m-%d%[ T_-]%H:%M:%S%?[Z]     2016-03-26 07:45:49
  8 %Y-%m-%d%[ T_-]%H:%M%z           2016-03-26 07:45+0000
  9 %Y-%m-%d%[ T_-]%H:%M             2016-03-26 07:45
 10 %Y-%m-%d                         2016-03-26
 11 %-I:%M:%S%?[ ]%^P                7:45:49AM
 12 %-I:%M%?[ ]%^P                   7:45AM
 13 %-I%?[ ]%^P                      7AM
 14 %H:%M:%S,%k                      07:45:49,000
 15 %H:%M:%S                         07:45:49
 16 %B %o, %Y                        3月 26th, 2016
 17 %d%[-/ ]%b%1%y                   26- 3月-16
 18 %d%[-/ ]%b%1%Y                   26- 3月-2016
 19 %Y %b %d                         2016  3月 26
 20 %b %d, %Y                         3月 26, 2016
 21 %^v                              MMXVI
 22 %v                               mmxvi


vim-speedatingのインストール


NeoBundleの場合は下記行をvimrcに追加。

NeoBundle 'tpope/vim-speeddating'


使い方


これまでと同じように<C-a><C-x>を押せば、日時フォーマットも適切にインクリメント/デクリメントできるようになる。カーソルを置く場所により時刻が対象になったり、日付が対象になったりするのも便利。また、:SpeedDatingFormat {format}のようにすればオリジナルのフォーマットも追加可能。

実践Vim 思考のスピードで編集しよう!

実践Vim 思考のスピードで編集しよう!