通过AutoHotKey脚本复制++运算符?

时间:2013-09-06 20:39:24

标签: autohotkey

假设我正在编写文本编辑器并希望迭代变量:

i++

现在,让我们说无论出于何种原因,这种语言不是++而是:

i = i + 1

当你习惯了第一种语法时,这很烦人。我想要一个脚本,当接收到++时,将其转换为我发送的一系列命令(控制左移箭头等,这不是我遇到麻烦的部分)。

但是我似乎无法执行此方法:

+ & +::

Msgbox test
return

无论出于何种原因,这都没有被完全调用 - 我没有看到键入时+的键击因此我知道它以某种方式进入该方法,但是,没有注册第二个{{1} }。

如何使用按键+作为触发器来调用方法?

2 个答案:

答案 0 :(得分:0)

有一个名为RegEx Powered Dynamic Hotstrings的非常棒的图书馆。并将someVar++替换为someVar = someVar + 1 reeks 的RegEx!

这一行会做你想要的:

hotstrings("(\w+)\+\+", "%$1% = %$1% {+} 1")

这适用于每个字母数字(加上下划线)的变量名称:[a-zA-Z0-9_]

当然,这不适用于所有语言,因为它在很大程度上取决于语法。例如,某些语言使用:=来分配表达式,其他语言需要使用分号来完成语句等等...

答案 1 :(得分:0)

Hotstrings将适用于这种场合,但是,您可能需要“?”即使在一个“单词”中也可以抓住它的修饰符,试试这样:

:*?:++::
    ClipboardOld := ClipboardAll,Clipboard := ""
    Send, +^{Left}^c
    Clipwait
    Send, ^{Right} = %Clipboard% {+} 1
    Clipboard := ClipboardOld,ClipboardOld := ""
return

这也保留了剪贴板。