AHK: 用 Clipboard 取代 Long Replacement 以增進效能

目前我用到的 AutoHotKey (AHK) 的 Hotstrings 功能,通常僅限於單行或兩行(以插入 {Enter} 達成,實際上還是只有一行)的文字替代,但其實 AHK 也有提供多行的文字替代 (Long Replacement),可以編寫出較好閱讀的內容。

今天學長跟我討論,如果把一長串的文字設定成 Hotstring,在輸出的時候會像打字機一般一行一行印出,相當緩慢,自己試了一下,的確如此。

:O:test::
(
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
)

Cruncher1 在 AHK Forums 也提到了這個問題:How to make long slow hotstrings fast like they should be. 造成這個現象的主要原因是 Hotstring 是透過 Send 來把設定好的文字「一個一個」送出,有點在模擬我們手動 key in 的感覺。量少的時候感覺不明顯,字一多起來,效能自然低落。解決方法便是以 copy & paste 的方式來取代文字輸入。

:O:test::
ClipSave := ClipboardAll ; store clipboard data
Clipboard =
(
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
Text for Long Replacement.
)
Send, ^v
Clipboard := ClipSave ; restore clipboard data
ClipSave :=
Return

這樣一來,拿來建立 CT/MR 這種長篇大論的 form 就不會有問題啦~