背景介绍
在编辑器中使用Vim时,经常需要在 Normal 模式和 Insert 模式之间切换。对于使用中文输入的用户来说,在退出 Insert 模式时常常忘记切换回英文输入法,导致 Normal 模式下的命令无法正确执行。本文将介绍如何使用 AutoHotkey 脚本来自动解决这个问题。
功能特性
- 支持 VSCode 和 WebStorm 编辑器
- 按下 ESC 键时自动切换为英文输入法
- 适用于 Windows 系统
实现原理
通过 AutoHotkey 监听 ESC 按键事件,调用 Windows IME API 来切换输入法状态。脚本会检测当前激活的窗口是否为支持的编辑器,从而实现针对性的输入法切换。
支持Webstorm和Vscode,用AutoHotKeys实现。
脚本代码(由AI实现)
;=====================================================================o
; VSCode Vim Normal模式自动切换英文输入法 ;|
;-----------------------------------o---------------------------------o
; IME状态获取/设置函数
IME_SET(SetSts, WinTitle="") {
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x006,SetSts,, ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
#IfWinActive ahk_exe Code.exe
~Esc::
IME_SET(0) ; 设置输入法状态为英文(0)
return
#IfWinActive
;---------------------------------------------------------------------o
;=====================================================================o
; WebStorm Vim Normal模式自动切换英文输入法 ;|
;-----------------------------------o---------------------------------o
#IfWinActive ahk_exe webstorm64.exe
~Esc::
IME_SET(0) ; 设置输入法状态为英文(0)
return
#IfWinActive
;---------------------------------------------------------------------o
使用方法
方式1、复制上面的代码自行通过AutoHotKeys创建脚本文件。