AutoHotkey の Hotstring で現在日時を指定フォーマットで挿入する
例として
dt[[
→2017/12/27 08:45:45
dts[[
→171227_084546
こんな挿入を実現するにはどうすればいいか。
コード
; 終了文字無しで発動させる #Hotstring * ; 自動置換後、最後に終了文字を入力しない #Hotstring O ; http://ahkwiki.net/FormatTime ; http://ahkwiki.net/Send ::dt[[:: FormatTime, now,, yyyy/MM/dd HH:mm:ss SendInput %now% return ::dts[[:: FormatTime, now,, yyMMdd_HHmmss SendInput %now% return
解説
- Hotstring という「指定文字を打つと何らかのアクションを実行する」機能を使う
- もっというと、そのアクションとして「日付時刻文字列を挿入する」を実行してやる
- 現在日時の文字列生成には FormatTime を使う
- SendInput で文字列送信
#Hotstring XXX
で Hotstring の挙動を色々変えられる。上記は私好み
TIPS(1): キャンセルは BackSpace ではなく Esc で
上記の例だと d, t, BackSpace, [, [ と入力しても dt[[
とみなされ 2017/12/27 08:49:09
みたいに現在日時が挿入されてしまう。
キャンセルしたいなら Esc キーを使う こと。d, t, Esc, [, [ と入力しても発動せずに済む。
TIPS(2): IME全角モードONの時でも半角のまま入力したい
上記の例だと、IMEで全角モードがONの時に d[[
と入力すると 2017・12・27
のように全角で入力されてしまう。
これを防ぐには以下のようにする。
::d[[:: FormatTime, now,, yyyy/MM/dd Clipboard = %now% Send,^v return
SendInput(一文字ずつ挿入するやり方)ではなく、Clipboard + Send(クリップボードにコピーした後、Ctrl + V を押させてそれを貼り付けるやり方)を使っている。
ただしこのやり方だと、挿入する度にクリップボード内容が上書きされてしまうことに注意。