2016-03-25 19 views
0

Ich hatte viele Seiten auf AHK gelesen haben, aber nicht jeder, der erklärt, gefunden, wie ein Skript zu machen, die mir ermöglicht ersetzen „für“, wenn es durch die folgende getippt hat:Einfache AHK-Skript nicht funktioniert

for(int i=0;i<CONDITION;i++) 
{ 

} 

Ich möchte, dass der Cursorfokus innerhalb der Klammern gesetzt wird, um sofort mit dem Schreiben des Schleifencodes zu beginnen. Hier

ist, was ich kam und bislang:

::for::for(int i=0;i<CONDITION;i++), 
{, 
    , 
} 

ersetzen Sollte „für“ mit dem Code am oberen Rand der Post, aber erhält die folgende Fehlermeldung:

Error at line 2. 

linetext: ,, 
Error: this line does not contain recognised action. 

The program will exit. 

Antwort

1

einen Hotkey (oder Hotstring), der mehr als eine Zeile ausführt, muss seine erste Zeile unter dem Hotkey (oder Hotstring) auflisten.

Komma, Semikolon und andere Zeichen wie {} ^! + # Haben in AHK eine besondere Bedeutung und müssen maskiert werden, um anders interpretiert zu werden als normalerweise. https://autohotkey.com/docs/commands/_EscapeChar.htm

::for::for(int i=0`;i<CONDITION`;i`{+`}`{+`})`n`{`{`}`n`n`{`}`}{Up} 

Der einfachste Weg ist einen solchen Text senden diese:

; #If WinActive("ahk_class Notepad") 

::for:: 
ClipSaved := ClipboardAll ; save clipboard 
clipboard := ""   ; empty clipboard 
clipboard =    ; send this text to the clipboard: 
(
for(int i=0;i<CONDITION;i++) 
{ 

} 
) 
ClipWait, 1    ; wait for the clipboard to contain data 
Send, ^v 
Send, {Up} 
clipboard := ClipSaved ; restore original clipboard 
return 

; #If 
+0

Vielen Dank! Ich werde dieses Beispiel verwenden, um while for foreach Schleifen zu machen :) – user2348235

+0

Sie müssen nicht die Zwischenablage verwenden, um den Text zu senden, wenn Sie send roh verwenden (z. B. siehe meine alternative Antwort). – PGilm

2

auch ziemlich einfach ist dieser Ansatz, das funktioniert gut in Scite und Notepad ++, die automatisch Tabbing Griffe:

::for:: 
SendRaw, 
(
For(int i=0;i<CONDITION;i++) 
{ 

} 
) 
Send, {Up}{End} 
return 
+0

Gerade kommentiert, dass das Tabbing für mich nicht gemacht hat, aber ich hatte es falsch getestet :) – user2348235

Verwandte Themen