在rcmdnk/vim_ahk AutoHotkey包中,应在哪个文件内添加Caps Lock到Esc的映射并仅作用于目标应用?
在rcmdnk/vim_ahk AutoHotkey包中,应在哪个文件内添加Caps Lock到Esc的映射并仅作用于目标应用?
嘿,我刚好折腾过这个vim_ahk包,给你说个稳妥的做法:
首先别直接改核心主文件(比如vim_ahk.ahk),不然以后更新包的时候你的自定义配置会被覆盖。这个包一般会留一个专门给用户加自定义映射的文件——vim_ahk_user.ahk,就在包的根目录里;要是没有的话,你自己新建一个也完全没问题。
接下来是映射的写法,分两种场景选:
场景1:自动适配所有vim_ahk生效的窗口(推荐)
vim_ahk本身有个内置变量VimAHKActive,专门用来判断当前窗口是否开启了类Vim编辑功能。用这个的话,你不用一个个指定Word、OneNote这些应用,自动适配所有你配置了vim_ahk的窗口:
#If VimAHKActive ; 仅在vim_ahk生效的窗口触发映射 CAPSLOCK::ESC #If ; 结束条件判断,恢复全局按键行为
场景2:只给特定应用加映射
如果你只想让这个映射在Word、OneNote里生效,那就直接用窗口类名来精准控制:
#IfWinActive ahk_class OpusApp ; Word的窗口类名 || WinActive("ahk_class OneNote") ; OneNote的窗口类名 CAPSLOCK::ESC #If
具体操作步骤:
- 找到
vim_ahk_user.ahk(没有的话就在包目录新建一个),把上面的代码粘贴进去。 - 要是你新建了用户文件,记得打开
vim_ahk.ahk主文件,在末尾加一行#Include %A_ScriptDir%\vim_ahk_user.ahk,这样主脚本会加载你的自定义配置。 - 保存所有文件后,右键点击系统托盘里的AHK图标,选“重新加载脚本”就生效了。
至于你提到的论坛用户遇到的问题,大概率是他做了全局CapsLock映射,导致在非Vim类窗口里出冲突。咱们这种带条件判断的映射,只在目标窗口生效,和你之前在Vim里用的逻辑完全一致,不会有问题的~
备注:内容来源于stack exchange,提问作者bongbang
相关产品推荐
相关产品推荐

