Wenn ich ein AHK-Skript wie dieses schreibe:
::abc::alphabet
Es funktioniert einwandfrei. Das einzige Problem ist, dass ein kopierter Textteil (der Dinge enthält, die ich automatisch ersetzen lassen möchte) nicht ersetzt werden soll.
Zum Beispiel:
!INS::{Ctrl Down}c{Ctrl Up}{Tab 2}{Enter}{Ctrl Down}v{Ctrl Up}
Ich kann es kopieren abc
, aber beim Einfügen erhalte ich nichts alphabet
(wie zuvor definiert).
Gibt es eine Möglichkeit, die kopierten und eingefügten Wörter zu ersetzen? Wenn ich beispielsweise den send
Befehl verwende, um eine Zeile oder einige Wörter zu senden, die ein Wort enthalten, das ich automatisch ersetzen möchte?
Antwort1
Hotstringsnur das, was Sie physisch eingeben. Um Suchen und Ersetzen auf demZwischenablagedu kannst den ... benutzenRegExErsetzenBefehl.
Unten sehen Sie ein Skript, das den ausgewählten Text kopiert und dann den geänderten Inhalt einfügt (nach Suchen und Ersetzen). Ich glaube, das ist, was Sie meinten:
#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