AHK-Skript zum automatischen Ersetzen von Zwischenablageinhalten

AHK-Skript zum automatischen Ersetzen von Zwischenablageinhalten

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 sendBefehl 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

verwandte Informationen