8.5 中/英输入平滑切换

代码中不可能全是英文,即便注释是英文,用户提示信息也多多少少得用中文吧,所以,在 vim 中输入中文是常有的。中/英文输入切换本身很简单,但是,如果又与 vim 的插入模式和命令模式一纠缠,那么,这事儿就不太自然了。

比如,我在插入模式下依次输入了中文的一二四三,本意是想输入一二三四,下意识地键入 esc 切换为命令模式,键入 x 剪切三,再键入 P 将三粘贴至四前。谁知,在键入 x 时,由于输入法仍保留在先前的中文状态下,导致 vim 的命令模式无法接收到命令,必须得再次键入 shift 切换至英文状态。如下图所示:

8.5 中/英输入平滑切换  - 图1(中文状态让命令模式无效)

这很不协调,我希望,在插入模式下输入完中文,切换至命令模式后,即便先前是中文输入状态,也不影响我正常使用命令模式,甚至再次切回插入模式后,能保持先前的输入状态。来了,fcitx.vim(https://github.com/lilydjwg/fcitx.vim )就是我要的。对,前提是你系统中用的是 fcitx 输入法(为何不用 scim、ibus?https://github.com/yangyangwithgnu/the_new_world_linux#7.4 )。装好这个插件后,我们再看看刚才的例子,在中文状态下从插入模式切换至命令模式,键入 x、P 调整完四和三顺序后,重新切换至插入模式,输入法状态仍保持中文。如下图所示:

8.5 中/英输入平滑切换  - 图2(即便中文状态也不影响命令模式)

几乎完美了,唯一问题是,该插件无法保证从其他程序窗口切换至 vim 后仍有效。