必须同时开启enable_ime、禁用gpu渲染(设为"none")、关闭搜狗“高级文字服务”,三者缺一不可;否则中文输入会卡顿、候选框乱飞或不触发,且每次修改后必须彻底退出所有subl.exe进程并重启。

必须同时开启 enable_ime、禁用 GPU 渲染、关闭搜狗“高级文字服务”,三者缺一不可——否则中文输入不是卡顿、就是候选框乱飞、或者直接不触发。
为什么 enable_ime 必须设为 true?
Sublime Text 4 build 4126+ 才真正接入 Windows IMM32 输入法接口,但默认关闭。不开 enable_ime,编辑器压根不向系统上报光标坐标、焦点状态和编码模式,输入法连“你在哪打字”都不知道,候选框自然不会弹出。
- 打开
Preferences → Settings,在右侧用户设置 JSON 中添加:"enable_ime": true - 该行末尾必须加英文逗号(若后面还有其他配置)
- 保存后必须彻底退出:右键托盘图标选
Exit,或任务管理器杀掉所有subl.exe进程——仅关闭窗口或Reload Settings完全无效
hardware_acceleration 为什么必须是 "none" 而不是 false?
GPU 渲染(OpenGL)会让 Sublime 报给输入法的光标坐标被 DPI 缩放二次放大。比如 125% 缩放下,它说“光标在 y=250”,实际物理像素却是 y=200,输入法按 250 定位,候选框就往上飘 50 像素。滚动几次后,偏移会累积,导致候选框跳到左上角甚至副屏。
- 在用户设置中添加:
"hardware_acceleration": "none"(注意是字符串"none",不是布尔值false) - 右键 Sublime 快捷方式 → 属性 → 兼容性 → 更改高 DPI 设置 → 勾选“替代高 DPI 缩放行为”,下拉选“应用程序”
- 删掉已废弃的
"gpu_window_buffer": true或false,它在新版本中无作用,还可能干扰渲染
为什么搜狗输入法必须关“高级文字服务”?
搜狗新版默认启用“高级文字服务”,它绕过 Windows 标准 IMM32 接口,直接 hook 文本控件内存地址。而 Sublime 的多光标、软换行、动态绘制等机制根本没有传统意义上的“文本控件句柄”,搜狗一 hook 就 hook 到空白地址,结果就是候选框乱飘、退格键失效、拼音不上屏。
- 右键搜狗状态栏 → 设置属性 → 高级 → 取消勾选:“使用高级文字服务(推荐)”和“允许在非标准编辑框中输入”
- 务必勾选:“兼容模式(适用于老旧程序)”——这个“老旧”恰恰是 Sublime 需要的
- 微软拼音用户也需检查:设置 → 常规 → 候选窗口 → 取消“使用嵌入式候选窗口”,勾选“在应用程序上方显示候选窗口”
怎么避免中文输入法挡住 auto_complete 补全框?
这不是 Sublime 的 bug,而是 Windows/macOS 输入法候选框默认绘制在顶层,把 Sublime 的 auto_complete 弹窗压在下面。根本解法不是调 Z-order,而是切断“输入焦点进编辑区 → 自动切中文”的链路,并限制补全触发范围。
- Windows 用户:系统设置 → 时间和语言 → 语言 → 中文 → 选项 → 键盘 → 微软拼音 → 选项 → 取消勾选“允许应用在文本框中启用中文输入”
- 在用户设置中加入:
"auto_complete_selector": "source, text.html - source.embedded",排除纯文本和 HTML 内联代码场景 - 搭配
"auto_complete_triggers"按语言限定触发字符,例如:{"selector":"source.py","characters":"."}
最容易被忽略的是:每次修改配置后,必须杀掉所有 subl.exe 进程再重启——任何“热重载”“重新加载设置”都无效。另外,Package Control 里搜到的 IMESupport 是 ST3 旧版,对 ST4 高分屏完全失效,真要用就得手动装 GitHub 上维护的魔改分支(如 zcodes/IMESupport),否则前面所有配置都白搭。











