Vim 智能切换输入法
核心思路
在 vim 中输入中文时切换输入法会非常不方便。比如写了中文注释,然后 ESC 进入 normal 模式,还需要再将输入法切换成英文才能操作。如果操作完需要进入 insert 模式继续输入中文又要再切换一次输入法。
陈斌提供了一个完美的解决方案
- 只有在 insert 模式才会输入中文,所以在 normal 模式切换到中文输入法时应该自动进入 insert 模式。
- 在 insert 模式切换输入法保持模式不变。
- 在 insert 模式按 ESC 键进入 normal 模式应该强制使用英文输入法。
下面的各个方式不一定按照上面的思路实现,一般实现的是 insert 切换到 ESC 时强制切换到英文输入法,从 normal 切换回 insert 模式时可以切回之前的输入法。
原生 Vim
主体是使用 lyokha/vim-xkbswitch 库做切换,不同系统环境依赖了不同的输入法切换库,可以在这里查看系统需要的输入法切换库。
MacOS(测试可用)
六步走安装
- git clone https://github.com/myshov/xkbswitch-macosx
- cp xkbswitch-macosx/bin/xkbswitch /usr/local/bin
- git clone https://github.com/myshov/libxkbswitch-macosx
- cp libxkbswitch-macosx/bin/libxkbswitch.dylib /usr/local/lib/
- install plugin: https://github.com/lyokha/vim-xkbswitch
- Vimrc 上配置
let g:XkbSwitchEnabled = 1
Win
切换需要用到美式键盘,如果你用 Win10,可通过以下方式添加:
设置 --> 时间和语言 --> 语言 --> 添加首选的语言,选择“英语(美国)”
使用 DeXP/xkb-switch-win 作为输入法切换库
Linux
使用 lyokha/g3kb-switch 作为输入法切换库
IdeaVim 插件(测试可用)
Idea 插件地址:https://plugins.jetbrains.com/plugin/9615-ideavimextension
项目仓库地址:https://github.com/hadix-lin/ideavim_extension
在 ~/.ideavimrc 下加上
set keep-english-in-normal
set keep-english-in-normal-and-restore-in-insert
更多配置方式见项目仓库 README。
VSCode Vim 插件(测试可用)
VSCode 的这个 Vim 插件自带了输入法切换能力。
配置介绍 https://github.com/VSCodeVim/Vim#input-method
对于 Mac 和 Win 需要安装一个命令。见 https://github.com/daipeihust/im-select
然后按上图配置好即可。
这个只是在切换回 normal 模式时使用英文输入法。
参考
https://zhuanlan.zhihu.com/p/49411224
https://www.zhihu.com/question/25744174/answer/506519877