AutoHotKey 热字符串不会在 WSL Ubuntu 中的 Windows 或 vim 中的 gvim 中触发

AutoHotKey Hotstring Won't Trigger in gvim on Windows or vim in WSL Ubuntu

我使用 AHK 将 ]dd 之类的字符串自动转换为当前日期(请参阅下面的代码)。在大多数 Windows 文本 editors/areas 中使用它时,它工作正常。但是,当我在 WSL 上将 gvim 用于 Windows 或 vim in Ubuntu 时,我经常需要输入一个 "priming" 字符或尝试热字串它工作的时间。在论坛中搜索 return 没有找到关于这个特定问题的任何结果。

#NoEnv  ; Recommended for performance and compatibility with future 

AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; This allows me to quickly enter date and time stamps.
::]dd::
FormatTime, TimeString, , yyMMdd ; LongDate
Send, %TimeString%
Return

:*:]t::
FormatTime, TimeString, , HHmm
Send, %TimeString%
Return

:*:]dt::
FormatTime, TimeString, , yyMMdd HHmm
Send, %TimeString%
Return

这些在记事本或其他无模式文本中几乎完美无缺editors/areas我用过,但我真的很喜欢vim。

我猜 AHK 正在关闭 space 字符而不是 CR/LF,所以在 vim 模式编辑器中进入 insert 模式(包括喜欢 PyCharm 使用 IdeaVim 插件)和点击 Enter 不会让 AHK 知道开始寻找 muh hawtstrangs。我必须点击 Space,有时还要点击几次,才能识别热字串。

我想我可以只创建热键,但我在 macOS 的 Keyboard Maestro 中使用这种方法,在 *NIXes 中使用键盘设置,我重视肌肉记忆。

是否有我忽略的配置,或者这只是一个边缘案例?

为了使其在 Vim 中可靠且一致地工作,在 hotstring 选项中,同时包含问号和星号 (:*?:...),而不仅仅是星号或空选项。此解决方法仅在 Vim 和 Windows 上对我有用。否则第一次进入insert-mode时Autohotkey不会展开

因此,它可能看起来像:

...

:*?:]dd::
FormatTime, TimeString, , yyMMdd ; LongDate
Send, %TimeString%
Return

:*?:]t::
FormatTime, TimeString, , HHmm
Send, %TimeString%
Return

:*?:]dt::
FormatTime, TimeString, , yyMMdd HHmm
Send, %TimeString%
Return

但是,这会稍微改变行为,因为它会触发单词内的热字串,所以 Hello]dd 会触发 ]dd。但我可以忍受这一点,避免总是检查它是否触发了热字串的挫败感。

或者,为了完美匹配初始行为,我会使用 UltiSnips 插件在 vim 中重新创建文本扩展,但这会比必要的工作多一点。