AutoHotkey で全角入力中でも Markdown 記法を素早く入力できるようにする
AutoHotkey の Hotstring を使う。
やりたいこと
以下のように Markdown 記法の入力を省力化したい。
- 「m1 」と入力すると
#
が入力される- 「m2 」だと
##
- 「m2 」だと
- 「l1 」と入力すると
-
が入力される- 「l2 」だと
-
←先頭にスペースが二つあります
- 「l2 」だと
- 「bb 」と入力すると
**<ここにカーソルを持ってくる>**
が入力される - 「lnk 」と入力すると
[](<ここにカーソル>)
が入力される
abbr(省略語)については何でもよいが、上記は m1 は見出し(Midashi)レベル1、l2 はリスト(List)レベル2、b は太字(Bold)、lnk はリンク(lnk)という具合で、個人的な覚えやすさを元にして考えたものである。
なぜ?
Markdown で日本語文章を書いているが、各種文法を入力するのにいちいち半角モードに切り替えて打つのが面倒くさい(しミスタイプも多い)から。
コード
; refs ; http://ahkwiki.net/Hotstrings ; http://ahkwiki.net/FormatTime ; http://ahkwiki.net/Send ; http://ahkwiki.net/Clipboard ; 終了文字無しで発動させる #Hotstring * ::m1 :: Clipboard := "# " Send,^v return ::m2 :: Clipboard := "## " Send,^v return ::m3 :: Clipboard := "### " Send,^v return ::l1 :: Clipboard := "- " Send,^v return ::l2 :: Clipboard := " - " Send,^v return ::l3 :: Clipboard := " - " Send,^v return ::bb :: Clipboard := "****" Send,^v Send,{Left}{Left} return ::lnk :: Clipboard := "[]()" Send,^v Send,{Left} return
コードの解説(Q&A風に)
- Q: なぜ(Sendで文字を送らずに)クリップボードからのコピペで挿入している?
- A: 全角入力中でも確実に入力させるため
- Q:
#Hotstring *
これは何?- A: 終了文字を打たずに挿入するため
- これを有効にしないと、終了文字(タブとかスペースとかEnterとか)を最後に打たないと挿入されない仕様
- Q:
Send,{Left}{Left}
は何?- A: カーソル位置を(最も自然と思えるところまで)移動させている
- 太字の場合は
**ここ**
だし、リンクの場合は[](ここ)
だと思う(URLから書く場合)
- Q:
Clipboard := "****"
は=
を使ったり"
を省いたりする書き方もあると思うけど?- A: ない。そうすると末尾のスペースを入力できないので、この書き方一択になるはず。