Vim的中文输入解决方案

近日终于配置好了一个觉得满意的在Vim中输入中文的一个方案,现在分享给大家。

首先,安装依云的fcitx.vim插件(注意根据Fcitx的版本,安装相应的版本)。此插件会记录当前Fcitx的输入方式, 当从VimInput模式切回Normal模式的时候,输入方式会自动切换到英文。这样无需手动切换输入方式,便可使用Vim的快捷键,而不会被输入方法拦截。然后再从Normal回到Input的时候,会自动切换回记录的输入方式,因此无需手动切换输入方式就可以在Vim中进行流畅的中文输入。

我很满意这个方案,但是有一个弊端就是我平常是使用jk来进行模式的切换,而并非默认的<esc>或者Ctrl + [。当我按下jk的时候,如果我的输入方式是中文,Vim并不会自动进行模式切换,我必须要使用<esc>或者Ctrl + [才行。为了解决这个问题,我开发了jk.vim,此插件会监控当前的按键,当jk按下的时候,会自动切换Vim的模式从InputNormal

不过还是有不完美的地方,比如如果当前的Vim并不是在本地上运行的,而是远程连接的,这种情况下jk.vim并不会起作用。另一个问题是如果当前有一个补全buffer的存在,会导致从Insert切换到Normal失败。这似乎是一个已经被修复的bug, 不知道为何还是会出现。所以我个人在编写中文的时候会把补全关掉,反正也没什么作用。