VIM输入法(自动)切换,不使用插件

如题,之前切换输入法使用的是fcitx.vim这样一个插件,某次使用fcitx5后插件还没有适配。因此查看其代码后有了精简版本。

在插件的实现中使用了python的dbus库与fcitx5-dbus交互实现输入法切换和判断。

实际使用fcitx5-remote即可以对输入法状态进行识别,代码如下:

let fcitx5state=system("fcitx5-remote")
autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c
autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif

很好理解,就是添加了一个变量判断是否为中文输入法(状态2为输入法已激活即中文输入法激活)。其中还有一个点是利用|实现的行分隔。

以上

致谢

https://www.w3cschool.cn/vim/1xa9oozt.html

https://github.com/vim-scripts/fcitx.vim