以下の設定をしておくと、ショートカットキーの入力で 2014-01-27
のような本日の日付を挿入することができます。
ここでは、ショートカットキーを CTRL-D
CTRL-D
というコンビネーションに割り当てていますが、任意の組み合わせに変更することができます。
imap <silent> <C-D><C-D> <C-R>=strftime("%Y-%m-%d")<CR>
nmap <silent> <C-D><C-D> <ESC>i<C-R>=strftime("%Y-%m-%d")<CR><CR><ESC>
imap
と nmap
の両方で定義しているので、挿入モードのときも、ノーマルモードのときも、ショートカットキーを入力して日付の挿入を行うことができます。<silent>
を入れることで、コマンドラインのエコーを防いでいます。<C-R>=
というのは、その後ろに記述した式を実行して展開するためのイディオムです(=
は Expression register を示しており、詳細は :help i_CTRL-R
で確認できます)。日付の挿入を頻繁に実行するのであれば、F1
キーのような単独キーに割り当てるようにすれば、さらに手軽に実行できるようになります。
imap <silent> <F1> <C-R>=strftime("%Y-%m-%d")<CR>
imap <silent> <F2> <C-R>=strftime("%Y-%m-%d (%a)")<CR>
ちなみに、F1
キーはデフォルトではヘルプの起動 (:help
) のショートカットキーとして設定されているため、上記のように設定すると、F1
キーでヘルプは起動できなくなります。
また、キーシーケンスの都合で、CTRL-1
といった CTRL+数字キー
という組み合わせはうまく動作しません。
Vim の strftime
のフォーマット文字列で使用できる記号 (%Y
など)は、C 言語の strftime
関数と同様のものです。
なので、Linux 環境や macOS 環境であれば、下記のようにして C 言語の man ページで詳細を確認できます。
$ man 3 strftime
下記はフォーマット文字列と、その出力の例です。
呼び出し方 | 実行結果 |
---|---|
strftime("%Y-%m-%d") |
2018-10-28 |
strftime("%Y-%m-%d (%a)") |
2018-10-28 (日) |
strftime("%Y-%m-%d %H:%M:%S") |
2018-10-28 20:46:18 |
strftime("%c") |
日 10/28 20:52:24 2018 |
strftime("%Y %b %d %X") |
2018 10 28 20時53分37秒 |
%Y
: 4桁の年 (例: 2018
)%y
: 2桁の年(例: 18
)%m
: 2桁の月(01
〜12
)%B
: 月の名前(米国では December
、日本では 12月
など)%b
: 月の略称(米国では Dec
、日本では 12
など)%d
: 2桁の日付 (例: 28
)%A
– 曜日の名前(米国では Sunday
、日本では 日曜日
など)%a
– 曜日の略称(米国では Sun
、日本では 日
などになる)%H
– 24時間表示の時(00
〜23
)%X
– 時刻の標準的な表示(米国では 20:53:37
、日本では 20時53分37秒
など)%c
– 日付+時刻の標準的な表示(米国では Sun Oct 28 20:52:24 2018
、日本では 日 10/28 20:52:24 2018
など)strftime
の出力を確認してみたいときは、:echo strftime("%c")
のように実行します。あるいは、インサートモードで CTRL-R= に続けて strftime("%Y-%m-%d")
のように入力すれば、カーソル位置に実行結果を挿入することができます。