vim模式切换时的输入法处理
对于中文用户来说,vim有一个不便之处,就是:
从Insert模式切换为Normal模式时,忘记了把输入法切换为英文,导致命令无法执行:-<
参考网上的办法,通过autocmd命令在进入和退出Insert状态时,对输入法进行切换,保证退出Insert状态时中文输入法无效即可。
Windows+WSL解决方案
这里需要一个能切换输入法的外部程序(其实是切换语言包,这就要求计算机必须安装中文和英文两个语言包)。可从这里下载:
1 | cd /usr/local/bin |
然后编辑~/.vimrc,在适当的地方增加:
1 | autocmd InsertLeave * :silent !im-select.exe 1033 |
其中slient 表示执行完立即返回(静默执行),不再显示’Press Enter to Return’
linux解决方案
linux方案在centos8上通过,其它发行版可能略有区别。
linux不需要下载语言包切换软件,因为一般都自带,在CentOS中是ibus
在.vimrc适当的地方增加:
1 | autocmd InsertLeave * :silent !ibus engine xkb:us::eng |
解决!
缺憾
以上两种环境,输入法和vim运行在同一台机器上(im-select.exe其实是Windows程序,不过wsl下的linux可直接执行,微软给力)。如果是ssh这样的环境,输入法和vim在不同的机器上,就无能为力了。
gvim据说可以直接设置,没试过,下次试一下。