AutoHotkey で全角入力中でも Markdown 記法を素早く入力できるようにする

AutoHotkey の Hotstring を使う。

やりたいこと

以下のように Markdown 記法の入力を省力化したい。

  • 「m1 」と入力すると # が入力される
    • 「m2 」だと ##
  • 「l1 」と入力すると - が入力される
    • 「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: ない。そうすると末尾のスペースを入力できないので、この書き方一択になるはず。