Autohotkey 自动热键-撤消整个宏而不是单个命令(Windows 7)

Autohotkey 自动热键-撤消整个宏而不是单个命令(Windows 7),autohotkey,Autohotkey,我事先试着寻找答案,但没有找到我想要的。如果之前已经回答过,请提前道歉 我做了一些web工作,并在AHK中创建了一个宏,它将Ctrl+Shift+B绑定到HTML,相当于在文本选择周围添加粗体标记 流程是: 剪切(ctrl+x),键入,粘贴剪切文本(ctrl+v),键入 宏运行正常,但有时我想撤消它。但是,每当我按下Undo(ctrl+z)时,我都会向左按该命令4次,每次按一次,就会恢复上面发布的命令中的一个 有没有更好的方法来编写我的AHK宏,以便我能够在一次按键中撤消整个宏?任何提示都很好。

我事先试着寻找答案,但没有找到我想要的。如果之前已经回答过,请提前道歉

我做了一些web工作,并在AHK中创建了一个宏,它将Ctrl+Shift+B绑定到HTML,相当于在文本选择周围添加粗体标记

流程是: 剪切(ctrl+x),键入
,粘贴剪切文本(ctrl+v),键入

宏运行正常,但有时我想撤消它。但是,每当我按下Undo(ctrl+z)时,我都会向左按该命令4次,每次按一次,就会恢复上面发布的命令中的一个

有没有更好的方法来编写我的AHK宏,以便我能够在一次按键中撤消整个宏?任何提示都很好。对于Windows7,如果这有区别的话

我在下面添加了宏

^+b::
{
SendInput ^x
SendInput <b>
SendInput ^v
SendInput </b>
return
}
^+b::
{
发送输入^x
发送输入
发送输入^v
发送输入
返回
}
编辑:<;hmtl等效于“以下是一些代码:

^+b::
Click, 2 ; Highlight current word
Send, ^x
ClipWait, 1 ; ADDED to wait for clipboard
SendInput, <b>^v<`/b>
Return

!b::
Send, ^{z 4}
Return
^+b::
点击,2;突出显示当前单词
发送,^x
克里普韦特,1;添加到等待剪贴板
发送输入,^v
返回
!b::
发送,^{z4}
返回

!b::
发送“向后搜索命令”以查找
发送,{Del}
发送“向后搜索命令”以查找
发送,{Del}
返回

!b::
发送,{Home}+{end};[Home]然后[Shift][End]高亮显示当前行
发送,^h;或启动查找/替换的任何其他命令
发送,^v{Tab}^v{Enter};或仅在当前部分中需要替换的内容。。。
返回
试试这个:

^+b::
{
Clipboard =
SendInput ^c
ClipWait, 1
Clipboard = <b>%Clipboard%</b>
SendInput ^v
return
}
^+b::
{
剪贴板=
发送输入^c
克利普韦特,1
剪贴板=%剪贴板%
发送输入^v
返回
}

因为您唯一要做的就是粘贴,所以撤消粘贴将同时撤消两个粗体标记。剪贴板编辑未注册为“撤消”操作。

如果您确实告诉了您使用的HTML编辑器,那就太好了……为什么不制作一个四次撤消的热键呢?制作一个四次撤消的宏的唯一问题是,它将仅限于此特定宏(或包含4个命令的宏)。我本来打算创建更多的宏,使用不同数量的命令,但觉得这个例子很容易解决问题。谢谢你的建议!谢谢你的建议。我喜欢第二篇文章的想法,但我希望有一种方法可以编写我最初的粗体标记AHK脚本,以便Windows将宏解释为单个命令。我在玩游戏,尝试在一行中完成所有操作,这类工作,因为我可以在一次撤消中撤消带标记的粘贴,但似乎剪贴板可能需要一两秒钟才能更新,因为我丢失了一些突出显示的文本。也许我可以再推迟一段时间来帮忙^+b::SendInput ^x%clipboard%Return首先,剪贴板确实有延迟。为了解决这个问题,您需要添加一行clipwait(参见上文)。“撤消”更改的另一种方法是高亮显示整行,并对结束字符串和原始字符串进行查找替换。
!b::
Send, {Home}+{end}  ; [Home] then [Shift][End] to highlight current line
Send, ^h ; Or any other command to start find/replace
Send, <b>^v<`/b>{Tab}^v{Enter} ; or what is required to replace in current section only...
Return
^+b::
{
Clipboard =
SendInput ^c
ClipWait, 1
Clipboard = <b>%Clipboard%</b>
SendInput ^v
return
}