由于笔者大脑是静态的,在vscode里敲多代码以后,再使用输入法(尤其是英文输入法)就常常试图按tab自动补全,造成不必要的删改。
于是去问GPT,它向我推荐了用AutoHotkey映射的方法。由于tab键在一般工作中用的不多,直接把tab映射到空格还是可行的,并且这个方法能根据输入法的切换来开启和关闭映射。
1 下载并安装AutoHotKey
2 新建脚本并复制以下代码:
; 保持脚本运行
Persistent ; 设置计时器,每1000毫秒检查一次当前输入法 SetTimer(CheckIME, 1000) CheckIME() { Keysyn := GetKeyboardLayout() ; 获取当前输入法 if (Keysyn == 134481924) { ; 将 Tab 键映射为空格键 Hotkey("Tab", SendSpace, "On") } else { ; 取消映射 Hotkey("Tab", SendSpace, "Off") } } ; 发送空格键的函数 SendSpace(*) { Send("{Space}") } ; 获取当前输入法布局 GetKeyboardLayout() { hwnd := WinExist("A") if !hwnd return 0 ThreadID := DllCall("GetWindowThreadProcessId", "ptr", hwnd, "uint*", 0, "uint") Keysyn := DllCall("GetKeyboardLayout", "uint", ThreadID) return Keysyn }
这里面的keysyn是当前键盘布局的标识符,它只有在切换键盘布局的时候会变,开关机和在同一个键盘布局的不同输入法间切换都是不变的。

图中在微软拼音和百度输入法间切换是不变的。
我没有在多个设备间测试,如果你的标识符不一样,可以在vscode里安装AutoHotkeyDebug然后在图示位置打断点调试,左侧就是标识符的值。

3 运行无误后打开安装的AutoHotkey Dash,点击compile把刚刚的脚本编译成exe,最后放进C:\ProgramData\Microsoft\Windows\Start Menu([开始]菜单)\Programs(程序)\StartUp(启动)路径中就可以实现开机自启。