这个问题类似于是什么阻止 ctrl-alt-m 进入 Windows 10 上的 IntelliJ
。但是,ctrl + alt + <anyKey>
确实进入了 jetbrain IDE,之后按任何键都只会导致意外行为。特别是我发现发出^!u::SendRaw, {
映射后按 Enter 键,结果会在 Jetbrain IDE 左上角的小弹出窗口中显示。请注意,意外行为ctrl + alt + <anyKey>
仅发生在 jetbrain IDE 中,在任何其他应用程序中都可以正常运行。
我的 AHK 脚本:
LControl & RAlt:: AltGr := true ; assign the boolean value "true" to the variable 'AltGr''
LControl & RAlt Up:: AltGr := false
; The #If directive creates context-sensitive hotkeys and hotstrings
#If (AltGr) ; If this variable has the value "true"
; =========== AltGr should function as AltGr (a unique key)
+s::Send, "
j::SendRaw, [
k::SendRaw, ] ; These works perfectly fine in any jetbrain IDE :)
u::SendRaw, {
i::SendRaw, }
#If ; turn off context sensitivity
; (ctrl)+(alt) mappings
^!u::SendRaw, { ; <-- these mappings doesn't work in jetbrain IDEs!!
^!i::SendRaw, } ; A popup always opens after pressing enter after ..
^!j::SendRaw, [ ; ... issuing one of these mappings
^!k::SendRaw, ]
我发现映射的输出ctrl + alt + <anyKey>
是导致问题的原因。例如,如果我改为这样做,它会工作得很好!因此,发送^!u::SendRaw a
映射存在一些问题,导致了问题。ctrl + alt + <anyChar>
<any char thta is a bracket or curly bracket>
更新
我找到了一个解决方案,但这不是一个好的解决方案,实际上我宁愿不使用我的 AHK 映射,也不愿使用这个解决方案:
https://boringreallife.com/autohotkey-send-fix-for-intellij/
这很糟糕,因为映射仅在 keyUp 时触发,这意味着您无法按住键映射来生成大量字符,并且现在我们已经习惯了在按键时出现字符,所以感觉非常慢(部分原因是明确的 keyDelay)和笨重。
所以,如果有人有任何解决方案,请分享!
答案1
我找到了一个相当不错的解决方案(但仍然不是很好,因为如果你太快连续触发组合键它就会中断):本质上,我只是添加了另一层抽象。
假设我想映射ctrl + alt + u
到}
任何 jetbrain IDE 中。那么我首先必须映射ctrl + alt + u
到一些从未使用过的角色,例如^!u::SendRaw, ê
。
现在,在 IDE 中触发该映射,对我来说,结果是ê
。
所以现在我在 .ideavimrc 中创建一个映射,如下所示:(一个用于我想要的模式)
:inoremap ê {
(请注意,我不能从一开始就映射alt + ctrl + <anyChar>
到{
.ideavimrc 内部,因为 .ideavimrc 无法识别 alt 键)。
...然后...就是这样。