繁体   English   中英

AutoHotKey Hotstring 不会在 Windows 上的 gvim 或 WSL Ubuntu 中的 vim 中触发

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

我使用 AHK 将像]dd这样的字符串自动转换为当前日期(见下面的代码)。 在大多数 Windows 文本编辑器/区域中使用它时,它工作正常。 但是当我在 WSL 上为 Windows 使用gvim或在 Ubuntu 中使用vim时,我经常需要输入一个“启动”字符或尝试几次热字符串才能使其工作。 搜索论坛没有返回有关此特定问题的任何点击。

#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

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

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

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

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

为了使其在 Vim 中可靠且一致地工作,在 hotstring 选项中,包括问号和星号( :*?:... ),而不仅仅是星号或空选项。 此解决方法仅适用于我在 Windows 上的 Vim 上。 否则第一次进入插入模式时,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 中重新创建文本扩展,但这会比必要的工作多一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM