Простой скрипт AHK не работает

Я прочитал много страниц на AHK, но не нашел ни одной, объясняющей, как создать сценарий, который позволял бы мне заменить «for», когда он набирается следующим образом:

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

}

Я хотел бы, чтобы он установил фокус курсора внутри скобок, чтобы сразу начать писать код цикла.

Вот что я придумал до сих пор:

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

Должен заменить «for» на код в верхней части поста, но получит следующую ошибку:

Error at line 2.

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

The program will exit.

0

Решение

Горячая клавиша (или горячая строка), которая выполняет более одной строки, должна указывать свою первую строку под горячей клавишей (или горячей строкой).
https://autohotkey.com/docs/FAQ.htm#autoexec

Запятая, точка с запятой и другие символы, такие как {} ^! + #, Имеют особое значение в AHK и должны быть экранированы, чтобы их можно было интерпретировать иначе, чем обычно.
https://autohotkey.com/docs/commands/_EscapeChar.htm

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

Самый простой способ отправить такой текст:

; #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
2

Другие решения

Также довольно прост этот подход, который хорошо работает в Scite и Notepad ++, который автоматически обрабатывает вкладки:

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

}
)
Send, {Up}{End}
return
2

По вопросам рекламы [email protected]