循环引用会导致 AutoHotKey 出错吗?
Can circular references cause errors in 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 行)。
问题是什么?
如果我注释掉第 5 行,那么 Cut 就可以了。但是,我从来没有让他们同时工作。第 1 行的分号 (;) 是否造成问题?
发生这种情况是因为按下 Ctrl+Q 会触发 "cut" 热键,即按下 Ctrl+X,触发 "paste without formatting" 热键,按下 Ctrl+Shift+V.
所以文本处理器收到
- Ctrl+X(剪切)和
- Ctrl+Shift+V(无格式粘贴),
只清除文本格式。
幸运的是,有一个简单的修复方法:$
热键前缀。来自 docs:
The $ prefix forces the keyboard hook to be used to implement this hotkey, which as a side-effect prevents the Send
command from triggering it.
您只需要在 Send
可以触发的热键前加上 $
。
^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
$^x::Send ^+v ; Paste without formatting
您的问题确实是由热键触发其他热键引起的,可以使用 $
修饰符修复,如其他答案中所述,但我建议您只使用 nice and easy remapping syntax 像这样:
^;::z ; Undo
^q::x ; Cut
^j::c ; Copy
^k::v ; Paste
^x::+v ; Paste without formatting
我写了我的第一个 AutoHotKey 脚本,但是这部分似乎有错误:
^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
^x::Send ^+v ; Paste without formatting
我无法让 Cut 工作(第 2 行)。
问题是什么?
如果我注释掉第 5 行,那么 Cut 就可以了。但是,我从来没有让他们同时工作。第 1 行的分号 (;) 是否造成问题?
发生这种情况是因为按下 Ctrl+Q 会触发 "cut" 热键,即按下 Ctrl+X,触发 "paste without formatting" 热键,按下 Ctrl+Shift+V.
所以文本处理器收到
- Ctrl+X(剪切)和
- Ctrl+Shift+V(无格式粘贴),
只清除文本格式。
幸运的是,有一个简单的修复方法:$
热键前缀。来自 docs:
The $ prefix forces the keyboard hook to be used to implement this hotkey, which as a side-effect prevents the
Send
command from triggering it.
您只需要在 Send
可以触发的热键前加上 $
。
^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
$^x::Send ^+v ; Paste without formatting
您的问题确实是由热键触发其他热键引起的,可以使用 $
修饰符修复,如其他答案中所述,但我建议您只使用 nice and easy remapping syntax 像这样:
^;::z ; Undo
^q::x ; Cut
^j::c ; Copy
^k::v ; Paste
^x::+v ; Paste without formatting