ホットストリング

提供: AutoHotkey Wiki
移動: 案内検索
リファレンス > ホットストリング - 公式ドキュメント

概要[編集]

ホットストリングは、ユーザーが特定の文字列をタイプしたときにアクションを発生させられる機能である。
入力された文字列を別の文字列を入力する自動置換型と、ホットキーのようにスクリプトを実行するタイプがある。

NT系専用。

自動置換型[編集]

::btw::by the way

上記のように設定すると、 btwという単語を入力したときに、それがBackSpaceで削除された後、代わりに by the wayと入力される。
置換後のテキストの指定はSendコマンド同様に特殊キーなども指定できるが、(今のところ)変数を展開することは出来ない。
置換後のテキストに2バイト文字を使うことはできないので、スクリプト実行型でクリップボードを経由して貼り付けるなどの方法を取る必要がある。

この機能は主に英語圏でのテキスト入力の省力化を想定していると思われ、日本語環境では使い道が限られる。
そこで、このページでは、スクリプト実行型に関係のある部分を主に説明する。

スクリプト実行型[編集]

::kita-::
Clipboard = キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
Send,^v
Return

上記のように設定すると、 kita-とタイプしたときに、 kita-がBackSpaceで削除された後、AAが貼り付けられる。
タイプしたテキストが削除されないようにするには、後述のオプションで B0を指定する。

終了文字[編集]

::btw::by the wayと設定した場合、ただ btwと入力するだけではホットストリングは発動しない。
単語のあとに終了文字が入力される必要がある。
デフォルトの終了文字は、 -()[]{}':;"/\,.?!{Enter}{Space}{Tab}である。

#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t

上記のように記述すると、終了文字を変更することができる。
この指令は他のオプションと異なり、スクリプト中で1回だけ有効で、全てのホットストリングに影響する。

後述するオプションで *を指定すれば、ホットストリングごとに終了文字を必要としないように設定することもできる。

自動置換型の場合、終了文字は置換後のテキストが入力されたあとに入力される。(Enterキー以外)
例えば、 btw/と入力すると、 by the way/になる。
これは Oオプションで無効化できる。

スクリプト実行型の場合、終了文字の入力は乗っ取られ、無かった事になってしまう。
スクリプト実行型の場合、組み込み変数 A_EndCharで入力された終了文字を知ることができる。

大文字小文字の違い[編集]

通常は大文字小文字の違いを無視して発動する。
更に、置換後のテキストがアルファベット列の場合、 btwby the wayBtwBy the wayBTWBY THE WAYのように置換される。
この動作は、 C1オプションで無効化できる。

大文字小文字を区別させたい場合は、 Cオプションを使用する。

::abc::::ABC::のような大文字小文字以外が同じホットストリングラベルは存在できない。
: :abc::のように、オプションを指定する部分に半角スペースを入れれば、別のラベル名と認識されるようになり、大文字小文字以外が同じホットストリングを設定できる。

オプション[編集]

オプションの指定の仕方には2通りある。
複数のオプションを指定するときは、スペースで区切っても区切らなくてもよい。

#Hotstring指令[編集]

#Hotstring C

上記のように記述すると、それ以降に定義されるホットストリングの設定を変更できる。

個別指定[編集]

:*:btw::by the way

個別のホットストリングの設定を指定するには、最初の :の間にオプションを記述する。

オプション一覧[編集]

SI 自動置換で、Inputモードを使って自動入力を行う。(デフォルト)
各モードの詳細はSendModeコマンドの説明を参照。
SP 自動置換で、Playモードを使って自動入力を行う。
SE 自動置換で、Eventモードを使って自動入力を行う。
B0 入力されたテキストをBackSpaceで削除しない。
なお、(1.0.17現在)終了文字の文字も削除されず、更に自動入力のあとに終了文字が入力されてしまう。
B B0オプションを解除・無効化する。
Z 発動した時点で、キー入力の記憶バッファをクリアする。
このオプションを使用しない場合、たとえば B0 * ?オプションつきの umaというホットストリングが発動した直後は、
記憶バッファに umaが入っているため、続けて ibouと入力すると、 umaibouというホットストリングが発動してしまう。
Z0 Zオプションを解除・無効化する。
C 大文字小文字を区別する。
C1 大文字小文字は無視しつつ、入力内容の大文字小文字の別によって自動入力される内容の大文字小文字を変化させる機能を無効化する。
Kn キーの入力間隔を指定する。
BackSpaceによる削除や自動置換では、1キーごとにここで指定したミリ秒だけ間を空けて入力される。
デフォルトは 0で、この場合 Sleep 0を実行したときと同様、他のプロセスによる割り込みを許す。
-1を指定すると、割り込みを許さず最高の速度で入力される。
O 自動置換で、最後に終了文字を入力しない。
P スクリプト実行型における割り込み優先度を指定する。
R 置換後のテキストで {Enter}のような特殊キーの解釈を行わず、記述されているテキストをそのまま入力する。
* 終了文字なしで発動するようにする。
? 単語の途中であっても発動するようになる。
通常は、アルファベットキーをタイプした直後に一致する入力が有っても無視される。
C0,O0,
R0,*0,
?0
各オプションの指定を無効化・解除する。

備考[編集]

BackSpaceによる打ち直し[編集]

ホットストリングの監視は、BackSpaceによる修正を考慮する。
例えば、 br{BackSpace}twbtwにマッチする。
他の非文字キーは無視され、監視内容はリセットされる。

マウスクリックが行われた場合も、監視内容はリセットされる。

テキスト入力欄以外での動作[編集]

ホットストリングはテキストが入力できない場所でもまったく同様に動作する。
自動入力されるキーによって予期せぬ動作になる場合もあるので注意が必要。

IME使用時の動作[編集]

ホットストリングはIMEがONのときにも有効である。
IMEがONのときにテキストが自動入力されると、 btwbyてぇわyのようにひらがなに変換されておかしくなってしまう。

また、 kita-のような母音を含むホットストリングでは、 きたーのように未確定文字列の文字数が減ってしまうため、BackSpaceによる自動削除で余分に削除が行われてしまう。
例えば、IMEで おにぎりを確定して、次に きたーを入力した場合、2文字余計に削除されて おにキタ━(゚∀゚)━!!となってしまう。
これを回避するには、 kt-のように母音を含まないホットストリングに割り当てればよい。
また、IMEの設定によっては、 Kita-のようにShiftを押しながら英字を入力すると、アルファベットの状態で入力される。
この場合、タイプした文字数とBackSpaceで削除すべき文字数は一致するはずである。
よって、 Kita-のようにホットストリングを大文字で打ち始めるようにすれば、余計な文字まで削除されてしまうのは回避できる。
間違えて きたーと入力しているときに発動してしまうのを避けたければ、 :C:Kita-::のように Cオプションを付けて、大文字小文字が一致しないときは発動しないように設定すればいい。

文字数の上限[編集]

ホットストリングとして使える文字数の上限は40文字。
置換後の文字列は1行の長さの上限である16,383まで可能。

複数マッチ時の優先度[編集]

入力が複数のホットストリングにマッチする場合、先に指定した方が優先される。

:?:btw::by the way
::abtw::aaaaa

上の例では、 abtwと入力したとき btwの部分が by the wayに置換される。

ユニコード版で利用する[編集]

AHKL AutoHotkey_Lで追加された以下の機能により、本家公式版よりホットストリング機能が使いやすくなった。

  • #Ifを利用して IME状態で有効・無効を切り替えられる
  • 日本語をそのままタイプできる(ユニコード版のみ)
ただしいくつか制限事項があるので、各項の注意事項をよく読むこと。

IME状態がOffの時のみホットストリングを使う[編集]

AHKLの #If は任意の式を利用できるので、 IMEがOffの時のみのホットストリングを定義できる。 これには外部ライブラリの IME.ahk を使うとかなり簡単にできる。

#If !IME_Get()
::kwsk::くわしく!!

日本語をそのままタイプできる[編集]

Sendコマンドでユニコード文字をそのまま送信出来るようになったのに伴い、ホットストリングでも同様の恩恵を得られるようになった。

::kwsk::詳しく!

ただし日本語を含む文字を送信するとIMEがOnになってしまう。 これを回避するには以下のよう全角/半角を押したことにしてIMEをOffにするとよい。

::kwsk::くわしく!{vkF4}