季承成 | CHENGCHENG JI

季承成 | CHENGCHENG JI

计算机科学与信息技术 博士 | Ph.D. in Computer Science and Information Technology

VIM的中文输入法问题


前言

自从多年前MacBook Pro重装更新以后就把它丢在一边投奔轻便的Air,已经有很久很久没有去弄Vim了。
寻思着将来的工作可能要写一些带中文的文档,觉得有必要把这个部分”捣鼓”一下。
这么一想又觉得早就该把各种自发的”捣鼓”都记录下来,虽然在正儿八经搞研究的时候都写成笔记本了,导致现在把这一箱箱的书本寄回国也成了个不大不小的麻烦。


言归正传,这篇文章的概要

能够使得Vim在输入模式下使用搜狗输入法输入中文,然后按Esc直接进入普通模式并自动切换成英文输入法进行命令操作。
而当再次进入输入模式时,会自动回到搜狗输入法,无需切换。

使用VimIM+SmartIM.

发现在使用Vim输入中文的时候有一个非常恼人的问题,那就是Vim在输入模式用中文输入法进行中文输入后,直接按Esc并不会切回普通模式,必须切回Eng然后再Esc才行。
经过一番捣鼓,发现有如下两个插件可以使用:

  • VimIM
    1. VimIM是一个Vim插件,实现了一个内嵌中文输入法框架,可以支持多种中文输入法并且默认支持云输入。
    2. 安装时只要下载vimim.vim到/usr/share/vim/vim73/plugin/中即可。
    3. 使用时用快捷键ctrl+-开启/关闭,ctrl+^切换输入法,ctrl+l切换全角和半角
    4. 然而,由于未知原因该插件开启时会自动进入vim兼容模式导致方向键失去作用,暂时并未启用
  • smartIM
    1. smartIM也是一个Vim插件,它的主要功能是能记录插入模式和普通模式下的输入法,使用Esc无缝切换
    2. 安装时下载插件本体smartIM.vim和与系统沟通程序im-select,拷贝到/usr/share/vim/vim73/plugin/
    3. 问题是在切换时会有1-2s的延迟会出现按了Esc也并没有切过去的情况

总结如果单独使用存在如下的问题:

  1. 单独使用VimIM并不能很好地兼容搜狗输入法
  2. 单独使用smartIM切换时会有1-2s延迟

而如果同时使用, 既可以很好地兼容搜狗输入法且也能很好地切换,实现一个近乎完美的效果。(不过仍然会有Vim进入兼容模式问题。)

都安装好之后,就可以进入输入模式,然后手动command+space切出搜狗输入法(或者其他任何输入法),输入中文。接下来在模式之间切换都不用去担心输入法的问题,插件会自动记忆并进行切换啦。

暂时就这样吧,好在平时写代码英文切英文不会有这个问题。

实际使用下来,发现其实已经习惯在中文输入后使用日文键盘的英文切换键,果然习惯才是最强大的。