Subscribed unsubscribe Subscribe Subscribe

sci

最果て風呂

Vimscript の strftime() の戻り値

久しぶりに Getsurei() を動かしたらエラーになってしまった。どうやら辞書から定数を引っぱってくるところでエラーになっているようで、strftime 関数の戻り値が影響しているみたい。

実はこのスクリプトを MBP 上の Vim で動かすのは初めてだった。iBook では v:lc_time が空になっていたので strftime("%b") の値は "Jan" や "Feb" の英語となる。辞書を 2 つ用意しておいて場合分けして key から value を取得する方針にしていた。今まではこれで問題がなかったのだけど……。

ところが MBP では端末の設定(ja)もあるのだけど strftime("%b") の値は " 1" や " 2" のように "空白 + 一桁数字" のようになるのだった。ヘルプによると「Cの関数strftime()のマニュアルを参照」となっていたので確認したのだけど「現在のロケールにおける月の省略名」となっていて良くわからない。

Windows ではどうなってるの?と思って動かしてみると strftime("%b") は "1" や "2" となっていた。なるほど、わからん。

OSX (もしかしたら UNIX 系) は一桁だと空白が入り、Windows では一桁の数字となるのかな?ヘルプにも「ポータブルじゃないからねっ!」って書いてあるし、場合分けするのも面倒なので予想される戻り値をひとつの辞書に突っ込むことで解決しちゃった。

いやまぁ、スクリプトを作成したのが 12 月だったものだから、一桁月の場合にどうなるなんて想定してなかったわ。