在 vim_ahk (AutoHotkey) 中将大写锁定重新映射放在哪里

在 vim_ahk (AutoHotkey) 中将大写锁定重新映射放在哪里

在哪里rcmdnk/vim_ahk我应该尝试将其重新映射到 AutoHotkey 包(哪个文件caps lockesc

我对 AutoHotkey 了解甚少,很长一段时间以来,我的整个 AHK 脚本都由以下部分组成:

#IfWinActive ahk_class Vim
  CAPSLOCK::ESC
return

现在我正在使用 vim_ahk 在 Word 和 OneNote 等应用程序中实现类似 Vim 的编辑,我不知道应该在哪里(以及如何)添加大写锁定映射以将效果限制在预期的应用程序中。

本论坛上的 vim_ahk 用户说使用 AHK 重新映射caps lock 给他带来了麻烦(他没有说一般情况下或只是针对软件包)。由于重新映射在 Vim 中对我有用,因此如果可能的话,我也想将它与 vim_ahk 一起使用。

更新如果发布的问题不清楚,请见谅。Vim(编辑器)使用退出插入模式(Vim 概念),但借助 AutoHotkey,Esc我能够改用该模式。caps lock

但是大多数其他程序中不存在这种模式,因此创建了 vim_ahk 以在其中某些程序中实现它(如可自定义变量中枚举的VimGroup)。与 Vim 一样,vim_ahk 使用Esc退出其伪插入模式,但由于此模式完全是由 vim_ahk 的 AHK 脚本创建的,因此简单的全局模式CAPSLOCK::ESC不起作用。有关有效的方法,请参阅我的答案,该答案来自 vim_ahk 的创建者。

答案1

并行运行多个 AHK 脚本没有问题。除了冲突之外,它们都可以正常工作。

因此,您不需要进行修改vim_ahk就可以让您的脚本和vim_ahk您一起工作。

小提示:

  • 由于您的脚本禁用了 CapsLock,您可以在其开头添加以下行:

    SetCapsLockState, AlwaysOff
    
  • 你的脚本中的命令return是多余的。

答案2

由于您链接的代码在 GitHub 上是开源的,因此您可以追踪VimGroup变量的验证方式。

函数IsVimGroup定义在文件是VimAhk类的成员。

现在,你可以利用这些Vim.IsVimGroup()知识vim.ahk适用于任何类型的代码。例如,您可以使用#If指令来验证它:

#If Vim.IsVimGroup()
CAPSLOCK::ESC

答案3

解决方案来自 vim_ahk 的创建者对我有用。只需在加载 vim_ahk 后添加此代码即可。

#If Vim.IsVimGroup()
CapsLock::Vim.State.HandleEsc()
#If

相关内容