セクション

monday.vim : Ctrl-a、Ctrl-xで曜日、月をループ (+他の用途への応用)

作者: 小見 拓 最終変更 2010年01月11日 11時42分

Ctrl-a、Ctrl-xで数字をインクリメント、デクリメントできる機能のように、 曜日、月をインクリメント、デクリメントすることのできる機能を提供します。 (Windows, Mac)

概要

monday : Lets you use ctrl-a and ctrl-x on names of months and weekdays
http://www.vim.org/scripts/script.php?script_id=1046

Ctrl-a、Ctrl-xで、曜日、月をインクリメント、デクリメントできる機能を提供するvimスクリプトです。

インストール方法

スクリプト をダウンロードして、
そのスクリプトをpluginディレクトリにコピーして下さい。

ファイル URL
monday.vim http://www.vim.org/scripts/script.php?script_id=1046

使い方

現在のバージョン(2004/09/13)で対応しているのは、

曜日
monday、tuesday、wednesday、thursday、friday、saturday、sunday


january、february、march、april、may、june、july、august、september、october、november、december
です。

これらの単語の上で、

  • Ctrl-aを押すと、1つ先の曜日、月に変更し、
  • Ctrl-xを押すと、1つ前の曜日、月に変更します。

なお、このスクリプトは、大文字小文字の構成もなるべく確保してくれます。

  • monday → tuesday (全部小文字の場合)
  • Monday → Tuesday (先頭の文字だけ大文字の場合)
  • MONDAY → TUESDAY (全部大文字の場合)

と変換します。

拡張

このスクリプトを拡張して、スクリプトが現在対応していない変換パターンを追加してみましょう。

変換パターンを追加するには、今の所、スクリプトを直接編集するしか方法はありません。 スクリプトをエディタで開いて、スクリプト内の変換パターンを定義している箇所にコードを追加します。

下の行の後に、パターンを追加していきます。

:call <SID>AddPair("december", "january")

曜日、月の省略形の変換パターンの追加

下のコードをスクリプト内のパターン定義箇所に追加してください。

:call <SID>AddPair("mon", "tue")
:call <SID>AddPair("tue", "wed")
:call <SID>AddPair("wed", "thu")
:call <SID>AddPair("thu", "fri")
:call <SID>AddPair("fri", "sat")
:call <SID>AddPair("sat", "sun")
:call <SID>AddPair("sun", "mon")

:call <SID>AddPair("jan", "feb")
:call <SID>AddPair("feb", "mar")
:call <SID>AddPair("mar", "apr")
:call <SID>AddPair("apr", "may")
:call <SID>AddPair("may", "june")
:call <SID>AddPair("june", "july")
:call <SID>AddPair("july", "aug")
:call <SID>AddPair("aug", "sep")
:call <SID>AddPair("sep", "oct")
:call <SID>AddPair("oct", "nov")
:call <SID>AddPair("nov", "dec")
:call <SID>AddPair("dec", "jan")

may、june、julyは、省略前と省略後でスペルが同じなので、組み込むことはできませんでした。
この場合、例えば「july」の次の月が「august」になるか、「aug」になるか、スクリプトからでは区別できないからです。
つまり、こういう状況が発生するような場合、変換パターンを追加することはできません。

このスクリプトのプログラマ的応用

変換パターンは、別に曜日、月など、時間に関わるものである必要はありません。

例えば、Javaプログラマなら
public ←→ protected ←→ private ←→ public ......
という変換パターンとか。

:call <SID>AddPair("public", "protected")
:call <SID>AddPair("protected", "private")
:call <SID>AddPair("private", "public")

true ←→ false、yes ←→ no、on ←→ off という変換パターンとか。

:call <SID>AddPair("true", "false")
:call <SID>AddPair("false", "true")
:call <SID>AddPair("yes", "no")
:call <SID>AddPair("no", "yes")
:call <SID>AddPair("on", "off")
:call <SID>AddPair("off", "on")

いろいろ考えられそうです。

ダウンロード

今回、解説した変換パターンを加えたスクリプトです。 いろいろ、手を加えて使ってみてください。

download

ドキュメントアクション
コメント
{no}. {user_name}  {posted}
{message_body}

(必須)
氏名を入力してください。
Eメールアドレスを入力してください。
(必須)
送りたいメッセージを入力してください。
Recent Comment
EnhCommentify.vim : 複数のファイルタイプに対応したソースコメントアウト、コメントアウト解除スクリプト — 名無しのvim使い
==> anonymous [2010/03/22 06:32:47]
vimエディタから外部のプログラムやコマンドを実行する。 — 名無しのvim使い
==> 通りすがりnoです [2010/02/04 18:28:49]
==> 通りすがりの者です [2010/02/04 18:30:28]
==> 通りすがりのものです2 [2010/02/04 18:41:38]
PCに昨日初めてさわった人でもわかるgvim超々入門 (Windows、vim6) — 名無しのvim使い
==> anonymous [2009/11/05 11:57:11]
==> 佐藤 よしお [2009/11/27 15:53:34]
==> 小見 拓 [2009/11/27 18:40:42]
==> anonymous [2010/01/06 19:48:09]
Update Feed
RSS1.0 / RSS2.0 / ATOM