根本原因是Sublime未将真实屏幕坐标传给Windows IMM32接口,需依次开启enable_ime、禁用hardware_acceleration、设置高DPI兼容模式、安装魔改版IMESupport插件、关闭搜狗高级文字服务,并彻底重启。

Sublime Text 中文输入法候选框不跟随光标,不是插件没装对,也不是输入法坏了——根本原因是它没把真实的屏幕坐标传给 Windows IMM32 接口。尤其在 ST4 build 4126+、高 DPI(125%/150%)、多显示器或用搜狗/QQ 输入法时,坐标偏移几十像素是常态,候选框飞到左上角或副屏是必然结果。
必须开启 enable_ime(ST4 4126+ 用户第一动作)
这是最轻量、最优先的操作,不开它,后面所有补丁都只是强行对齐。
- 打开
Preferences → Settings,在右侧用户设置中添加:"enable_ime": true(注意末尾英文逗号) - 保存后,必须彻底退出所有
subl.exe进程:任务管理器里杀干净,或右键托盘图标选 Exit,再重新启动 - 该选项启用 Windows 原生 IMM32 兼容层,让 Sublime 正确响应焦点切换、光标定位和编码状态;未开启时,插件和渲染设置基本白配
关掉 hardware_acceleration 并设高 DPI 兼容模式(高分屏绕不开)
GPU 渲染 + 系统虚拟缩放会让 Sublime 报告的坐标被放大,而输入法按原始像素定位,结果就是错位。
- 在用户设置中加:
"hardware_acceleration": "none" - 右键 Sublime 快捷方式 → 属性 → 兼容性 → 更改高 DPI 设置 → 勾选“替代高 DPI 缩放行为”,下拉选 应用程序
- 两步缺一不可:只关硬件加速,高分屏仍错位;只设 DPI 模式,GPU 可能卡住 IME 消息循环
- 顺手删掉已废弃项,比如
"gpu_window_buffer": true,它会干扰新渲染逻辑
手动安装魔改版 IMESupport 插件(别信 Package Control 里的原版)
Package Control 搜索到的 IMESupport 是老版本,对 ST4 + Win10/11 + 高分屏基本无效。真正起效的是社区重写的增强分支,它重写了 DPI 缩放补偿和多屏光标跟踪逻辑。
- 从 GitHub 下载魔改源码(如 zcodes/IMESupport 或国内镜像),解压后重命名文件夹为
IMESupport(去掉-master) - 按
Ctrl+Shift+P→ 输入Preferences: Browse Packages→ 回车,打开 Packages 目录 - 把整个
IMESupport文件夹拖进去(含ime_support.py和sublime_plugin.py) - 如果之前装过旧版,先卸载再覆盖,否则可能冲突;重启 Sublime 后自动生效,无需额外配置
搜狗输入法必须关“高级文字服务”(第三方输入法高频雷区)
搜狗新版默认开启“高级文字服务”,它绕过 IMM32 接口,直接 hook 文本框,和 Sublime 的轻量输入流严重不兼容——这不是 Sublime 的锅,是搜狗主动放弃兼容。
- 右键搜狗状态栏图标 → 设置属性 → 高级 标签页
- 取消勾选:
使用高级文字服务(推荐)和允许在非标准编辑框中输入 - 勾选:
兼容模式(适用于老旧程序) - 临时验证可用微软拼音:右键其图标 → 键盘选项 → 开启
使用以前版本的微软拼音输入法,基本秒恢复
最容易被忽略的是每次 Sublime 更新后,sublime_imfix.dll 补丁需要重放;还有进程没杀干净——哪怕只留一个 subl.exe,enable_ime 就不会加载。

















