必须设"enable_ime": true,否则sublime不报光标坐标、dpi缩放和焦点状态,输入法只能fallback至左上角;需配合"hardware_acceleration": "none"、魔改版imesupport插件及关闭搜狗高级文字服务,并彻底退出所有subl.exe进程后重启。

Sublime 输入法不跟随光标,不是配置漏了,而是几个关键机制同时失效或冲突——enable_ime 关、hardware_acceleration 开、IMESupport 插件加载失败、搜狗“高级文字服务”启用,这四者任意一个成立,候选框就会飞走。
为什么 enable_ime 是硬性前提,而不是可选项
ST4 build 4126+ 内置 IMM32 接口,但默认关闭。不开 enable_ime,Sublime 根本不向系统上报光标坐标、DPI 缩放因子和焦点状态。输入法连“该画在哪”都不知道,只能 fallback 到左上角或副屏角落。
- 必须写在用户设置(Preferences → Settings 右侧面板)中,格式为:
"enable_ime": true - 若该行非最后一行,末尾必须加英文逗号,否则 JSON 解析失败,整段设置被忽略
- 仅保存设置不生效:必须杀掉所有
subl.exe进程(任务管理器里清空),再重启
hardware_acceleration 开着时,坐标计算必然错乱
OpenGL 渲染路径会把光标坐标按 DPI 缩放倍数放大(比如 125% 缩放 → 坐标 ×1.25),而输入法仍按原始像素定位。结果就是候选框偏移几十像素,甚至跳到另一块屏幕。
- 正确写法是:
"hardware_acceleration": "none"(字符串"none",不是false或"off") - macOS 用户还需额外加:
"gpu_window_buffer": false,否则 Metal 后端仍可能干扰 NSTextInputClient 协议 - Linux 下若用 fcitx5 + Wayland,
hardware_acceleration必须关,且要配合GDK_BACKEND=x11启动
装了 IMESupport 却没用?大概率是装错了版本或路径
Package Control 搜索安装的 IMESupport 是 ST3 时代的原版,对 ST4 + 高分屏 + 多显示器完全失效。真正起效的是社区魔改分支(如 zcodes/IMESupport),它重写了坐标映射逻辑,做了 DPI 补偿和多屏跟踪。
- 别用 Package Control 安装;去 GitHub 下载 ZIP,解压后重命名文件夹为
IMESupport(去掉-master) - 按
Ctrl+Shift+P→Preferences: Browse Packages,把整个IMESupport文件夹拖进打开的目录,确保里面有ime_support.py - 如果之前装过旧版,先卸载再覆盖,否则可能因插件加载顺序冲突导致静默失效
搜狗输入法自己“绕开系统”,让所有配置白搭
搜狗新版默认开启“高级文字服务”,它不走 Windows IMM32 接口,而是直接 hook 文本框。Sublime 的轻量输入流根本没机会参与坐标同步,结果就是:设置全对,候选框照样卡左上角。
- 右键搜狗状态栏图标 → 设置属性 → 高级标签页
- 取消勾选:
使用高级文字服务(推荐)和允许在非标准编辑框中输入 - 勾选:
兼容模式(适用于老旧程序) - 改完立刻生效,无需重启 Sublime 或输入法
最常被忽略的点:你以为改完设置、点了保存、关了窗口就完事了——其实只要还有一个 subl.exe 在后台跑着,新配置就不会加载。真要生效,必须杀进程、再启动,一步都不能省。











