AutoHotkey の Hotstring で曜日文字列を素早く入力する

w[[ と打つと(今日が金曜日なら)Fri が入力される……そんなことがしたかった。

コード

; Hotstring のオプション. 自分好み.
; - 終了文字無しで発動させる
; 0 自動置換後、最後に終了文字を入力しない
#Hotstring *
#Hotstring O

; 曜日文字列を作るところ.
; 最初は配列を使おうとしたが AutoHotkey の配列型は扱いがよくわからず断念.
; 文字列操作で頑張ることにした.
get_dowstr()
{
    FormatTime, downum,, WDay
    dowtable := "SunMonTueWedThuFriSat"
    ; Wday は日曜日が 1、
    ; StringMid も 1-origin、
    ; ということでちゃんと整理しないと位置計算に戸惑う.
    startpos := ((downum-1)*3)+1
    dowstr := ""
    StringMid, dowstr, dowtable, %startpos%, 3
    return dowstr
}

; w[[ → 曜日文字列を実現する Hotstring 本体部分
::w[[::
    dowstr := get_dowstr()
    Clipboard = %dowstr%
    Send,^v
    ;SendInput %now%
return

おわりに

AutoHotkey の Hotstring で現在日時を指定フォーマットで挿入する - stamemo と組み合わせれば、日付時刻文字列の入力は自由自在。

私はメモ時にメモ時刻も併記するタイプなのだが、いちいち日付時刻文字列を手打ちするのはだるかった。ようやく思い通りの、素早い併記を実現できそうだ。

参考