Я прочитал много страниц на 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.
Горячая клавиша (или горячая строка), которая выполняет более одной строки, должна указывать свою первую строку под горячей клавишей (или горячей строкой).
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
Также довольно прост этот подход, который хорошо работает в Scite и Notepad ++, который автоматически обрабатывает вкладки:
::for::
SendRaw,
(
For(int i=0;i<CONDITION;i++)
{
}
)
Send, {Up}{End}
return