win10 sublime text3 中文拼音输入光标不跟随问题完美解决方式

2018年6月15日 1 条评论 1.08k 次阅读 3 人点赞

Sublime Text 对中文输入法的支持不是很好,以 Windows 10 中使用最新的 Sublime Text 3 为例,Win10 的拼音输入法可以输入中文,唯一的问题就是无法跟随光标。

常见bug为:在st3激活窗口开始用中文拼音输入法敲入拼音,但是拼音选框却悬浮在屏幕左上角位置,显然这不是正确的输入方式。在查阅了大量资料后,下面极哥就来说一下怎么改进:


网上对这个问题的解决方案是安装 IMESupport 插件,但是在 windows 10 中测试了一下,不解决问题。搜来搜去也没有找到更好的解决方案,所以决定自己修改 IMESupport 的代码。

大致看了一下代码,发现 IMESupport 的核心就是利用钩子机制,在光标移动的时候刷新一下输入法弹出层的位置。由于自己对 Windows 编程也不是很熟悉,所以只好对比 Vim IME 的处理,来看看是不是有可修改的地方。

参考 Windows API 文档和 VimIMESupport 的代码,发现核心函数就是 ImmSetCompositionWindow,其他的代码大致处理流程都差不多,看来 IMESupport 对输入法的处理思路是对的,可是为什么不行呢?

偶然间发现 vim 对与消息 WM_IME_NOTIFY 进行了处理,而 IMESupport 没有,所以测试了一下问题是不是出在这。结果,很幸运,被我猜中了,加了一行代码,解决问题。


我对 IMESupport fork 版本在

https://github.com/zcodes/IMESupport

主要修改内容:

Windows 10 中可用了。

使用 Visual Studio 2015 Community 重新编译了 dll 文件。

Notice: 这个修改可用,不错在我使用的过程还是发现了问题,就是对光标的跟随位置获取不是很准,位置可能有所偏差。


最后极哥的测试效果:


参考资料:

https://blog.csdn.net/qq_24345801/article/details/79077902

http://zcodes.net/2017/02/12/sublime_text_3_imesupport.html

https://www.zhihu.com/question/47100192/answer/187551084

极客青年

我是站长,极客青年,叫我极哥就好啦!

文章评论(1)

  • Free auto approve list 8-9-2018

    I’ve been having issues with my Windows hosting. It has set me back quite a bit while making the next list. This is the current list that I have. I should add another list in less than a week. I’ll let you all know when the next list is ready. Thank you for your patience.

    https://www.freeautoapprovelist.com/free-auto-approve-list-8-9-2018/

    2018年8月25日