简单的AHK脚本不起作用

时间:2016-03-25 12:47:08

标签: c++ string replace autohotkey

我已经在AHK上阅读了很多页面,但没有找到任何解释如何制作一个脚本,使我能够在下面输入“for”时替换“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.

2 个答案:

答案 0 :(得分:2)

执行多行的热键(或热字符串)必须列出热键(或热字符串)下面的第一行。 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

答案 1 :(得分:2)

这种方法也很简单,在Scite和Notepad ++中可以自动处理标签:

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

}
)
Send, {Up}{End}
return