一直以来,在vim当中输入汉字都有点小遗憾,因为平常只在vim里面写代码,所以勉强用vimim对付,但vimim有个最大的问题,有的时候如果网络不理想,会卡在那里很久,就像假死一样,而且最让人吐槽的是 vimim的文档,英文的说明比中文的好懂得多, 到现在我也没弄明白不同版本的中文说明到底哪个是最终版本。这两天使着fcitx的搜狗输入法,感觉非常棒,又动了调整vim和输入法的念头,简单搜索了一下,提到fcitx支持remote模式,能够配合自动切换输入法的状态。实现退出插入模式时,关闭fcitx;进入插入模式时,启用fcitx。
方法共有两种
"##### auto fcitx ###########
let g:input_toggle = 1
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction
function! Fcitx2zh()
let s:input_status = system("fcitx-remote")
if s:input_status != 2 && g:input_toggle == 1
let l:a = system("fcitx-remote -o")
let g:input_toggle = 0
endif
endfunction
set ttimeoutlen=150
"退出插入模式
autocmd InsertLeave * call Fcitx2en()
"进入插入模式
autocmd InsertEnter * call Fcitx2zh()
"##### auto fcitx end ######
注意事项
方法二可能存在性能问题,所以 里建议使用fcitx.vim插件。
我在初次使用上述两种方法的时候都没有成功,最后确认:
- 设置(Fcitx配置>>全局配置>>程序>>在窗口间共享状态)为否
使用命令在外部设置的方法:(之所以我的机器需要这步是因为在一些java软件里输入法的状态不能自动保持)
- 打开配置文件 ~/.config/fcitx/config文件,首先备份一下。
- 找到 [Program] 段,把 ShareStateAmongWindow=PerProgram 改成 ShareStateAmongWindow=No
- 运行命令 fcitx-remote -t 使新配置文件生效。