Когда я пишу такой скрипт AHK:
::abc::alphabet
Работает как по волшебству. Единственное, когда мне нужна скопированная часть текста (что-то, что включает в себя то, что я хочу автоматически заменить), он не хочет ее заменять.
Например:
!INS::{Ctrl Down}c{Ctrl Up}{Tab 2}{Enter}{Ctrl Down}v{Ctrl Up}
Позволяет мне копировать abc
, но при вставке я не получаю alphabet
(как определено ранее).
Есть ли способ сделать так, чтобы он заменил скопированные и вставленные слова? Например, когда я использую send
команду для отправки строки или некоторых слов, которые включают слово, которое я хотел бы автоматически заменить?
решение1
Горячие строкивлияют только на то, что вы физически печатаете. Для выполнения поиска и замены наБуфер обменаВы можете использоватьRegExReplaceкоманда.
Ниже приведен скрипт, который копирует выделенный текст, а затем вставляет измененное содержимое (после поиска и замены). Я думаю, это то, что вы имели в виду:
#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