当我编写这样的 AHK 脚本时:
::abc::alphabet
它工作得很好。唯一的问题是,当我想要复制一部分文本(包括我想自动替换的内容)时,它不想替换它。
例如:
!INS::{Ctrl Down}c{Ctrl Up}{Tab 2}{Enter}{Ctrl Down}v{Ctrl Up}
让我复制abc
但粘贴时我没有得到alphabet
(如前所定义)。
有没有办法让它替换复制和粘贴的单词?比如当我使用命令send
发送一行或一些包含我想自动替换的单词的单词时?
答案1
热字符串只会影响您实际输入的内容。要对剪贴板您可以使用RegEx替换命令。
下面是一个脚本,它复制选定的文本,然后粘贴修改后的内容(搜索和替换之后)。我相信这就是你的意思:
#x:: ;[Win]+[X]
;Empty the Clipboard.
Clipboard =
;Copy the select text to the Clipboard.
SendInput, ^c
;Wait for the Clipboard to fill.
ClipWait
;Perform the RegEx find and replace operation,
;where "ABC" is the whole-word we want to replace.
haystack := Clipboard
needle := "\b" . "ABC" . "\b"
replacement := "XYZ"
result := RegExReplace(haystack, needle, replacement)
;Empty the Clipboard
Clipboard =
;Copy the result to the Clipboard.
Clipboard := result
;Wait for the Clipboard to fill.
ClipWait
;-- Optional: --
;Send (paste) the contents of the new Clipboard.
SendInput, %Clipboard%
;Done!
return