循环引用会导致AutoHotKey中的错误吗?

时间:2020-05-25 17:59:56

标签: debugging keyboard-shortcuts autohotkey

我写了我的第一个AutoHotKey脚本,但是此部分似乎有错误:

^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
^x::Send ^+v ; Paste without formatting

我无法使用Cut(第二行)。

出了什么问题?

如果我注释掉第五行,那么剪切将起作用。但是,我从未让他们俩一次工作。第一行用分号(;)引起麻烦吗?

2 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为按下 Ctrl + Q 会触发“剪切”热键,该热键按下 Ctrl + X ,触发“不格式化粘贴”热键,该热键按 Ctrl + Shift + V

因此文本处理器会收到

  1. Ctrl + X (剪切)和
  2. Ctrl + Shift + V (粘贴时不格式化),

仅清除文本格式。


幸运的是,有一个简单的解决方法: $热键前缀。来自docs

$前缀强制使用键盘挂钩来实现此热键,这是一个副作用,阻止了Send命令触发它。

您只需要在Send可以触发的热键前面加上$

^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
$^x::Send ^+v ; Paste without formatting

答案 1 :(得分:1)

您的问题确实是由热键触发其他热键引起的,可以通过$修饰符来解决,如其他答案所述,但是我建议您只使用简单易用的{{3} }:

^;::z ; Undo
^q::x ; Cut
^j::c ; Copy
^k::v ; Paste
^x::+v ; Paste without formatting
相关问题