AutoHotkey の Hotstrings(ホットストリング) はクリップボードを使うと動作が安定する

AutoHotkey には PhraseExpress や TextExpander のように「省略語を入力した直後に、対応する文字列を即挿入する」機能がある。Hotstrings(ホットストリング) と呼ぶ。

普通に書くと、ホットストリングは「1文字ずつ挿入する」挙動になるが、この挙動だとたまに問題が起きることがある。

Before

#Hotstring *
#Hotstring O
::m@@::mailaddress@mail.address.com

上記の場合、m@@ と打つと、m@@ の三文字が消去された後、mai → ……と、対応するメールアドレスが一文字ずつ高速で挿入されていく。

ただし、これだと問題が起きることがある。たとえば日本語入力モードがオンの時は「まいぁっdれっs@まいl.あっdれっs.こm」となってしまう。

また、挿入文字列が長い場合は、挿入し終えるまでに時間がかかる。極端な例を出すが、1文字0.1秒で挿入するとしても、20文字あれば2秒かかってしまう。

そんな時は クリップボード経由で貼り付ける と動作が安定する。

After

以下のように書く。

#Hotstring *
#Hotstring O
::m@@::
    Clipboard = mailaddress@mail.address.com
    Send,^v
return

上記の場合、m@@ と打つと、m@@ の三文字が消去された後、mailaddress@mail.address.com という文字列が一気に挿入される。日本語入力モードがオンでも関係がない。

これは、一文字ずつ挿入しているのではなく「挿入したい "mailaddress@mail.address.com" という文字列をクリップボードにコピーして」「Ctrl + V で貼り付ける」という操作を行っているためだ。文字列がなんであろうと、どれだけ長かろうと、一気に貼り付ける。

注意点

しかし、このクリップボード経由で挿入するやり方にも問題、というかクセがある。

  • 既にクリップボードに存在していたデータが上書きされる
  • Ctrl + V が効かない入力フィールド上では入力できない
  • .ahk ファイルに記述するのが面倒くさい(3行分多い)

とはいえ、1文字ずつ挿入するよりも動作が安定してストレスが少ないので、悩んでいる方は試されたい。

使い所

色んな場面でよく使う文字列については、このクリップボード経由のやり方が良いのではないかと思う。個人的には、

  • 自分のアカウント名
  • 現在日付時刻

の二つについて、このクリップボード経由のやり方を採用している。日本語入力モードにかかわらず、安定してサクっと挿入できるのでストレスが無い。