必须设"enable_ime": true(ST4 build 4126+硬性前提),否则Sublime不报光标坐标;再关hardware_acceleration、卸载原版IMESupport改用zcodes魔改版、关闭搜狗高级文字服务,并彻底杀掉所有subl.exe进程后重启。

Sublime Text 中文输入法不跟随光标,不是输入法坏了,也不是你装错了插件——根本原因是它没把正确的坐标传给系统输入法。只要 enable_ime 没开、hardware_acceleration 还开着、或者用了搜狗的“高级文字服务”,候选框就必然飞走。
必须设 enable_ime: true(ST4 build 4126+ 硬性前提)
这是所有修复动作的前提,不是可选项。ST4 build 4126 起内置 IMM32 支持,但默认关闭;不开它,Sublime 根本不向 Windows 上报光标位置、DPI 缩放和焦点状态,输入法连“该画在哪”都不知道。
- 打开 Preferences → Settings,在右侧用户设置 JSON 中添加:
"enable_ime": true - 若该行不是最后一行,末尾必须加英文逗号
- 保存后,必须彻底退出:任务管理器里杀掉所有
subl.exe进程(仅关闭窗口或 Reload Window 无效)
关掉 hardware_acceleration:GPU 渲染会搞乱坐标
OpenGL 渲染路径下,Sublime 报告的光标坐标会被 DPI 缩放错误放大,而输入法仍按原始像素定位,结果就是候选框偏移几十像素,甚至跳到副屏左上角。
- 在用户设置中添加:
"hardware_acceleration": "none"(注意是字符串"none",不是false或"off") - macOS 用户若用 Metal 后端,还需加:
"gpu_window_buffer": false - Linux 用户需额外设置环境变量:
GDK_BACKEND=x11+GTK_IM_MODULE=xim,否则 XIM 协议不生效
别信 Package Control 装的 IMESupport
Package Control 里搜到的 IMESupport 是 ST3 时代的原版,对 ST4 + 高分屏 + 多显示器完全失效。真正起效的是 zcodes 社区魔改版,它重写了坐标映射逻辑,支持 DPI 补偿和多屏跟踪。
- 卸载通过 Package Control 安装的旧版
IMESupport - 从 GitHub 下载魔改 ZIP:https://www.php.cn/link/9255e8df7dc6a615445f42c0fd94587a
- 解压后重命名文件夹为
IMESupport(去掉-master),拖进Packages/目录(路径应为Packages/IMESupport/ime_support.py存在) - 重启 Sublime,插件自动生效,无需额外配置
搜狗输入法要关“高级文字服务”
搜狗新版默认开启该功能,它绕过系统 IMM32 接口,直接 hook 文本框,和 Sublime 的轻量输入流天然冲突——这不是 Sublime 的兼容问题,是搜狗主动放弃标准协议。
- 右键搜狗状态栏图标 → 设置属性 → 高级标签页
- 取消勾选:
使用高级文字服务(推荐)和允许在非标准编辑框中输入 - 勾选:
兼容模式(适用于老旧程序) - 改完立即生效,无需重启 Sublime 或输入法
最常被忽略的一点:哪怕所有配置都写对了,只要有一个 subl.exe 进程残留,新设置就不会加载。验证是否生效,最简单的方法是打开控制台(Ctrl+`),看有没有 IME support initialized 类日志;没有,说明插件根本没跑起来。

















