vim 在退出输入模式的时候切换为原来的输入法

在敲代码的时候使用我们使用的英文,当遇到问题,我们需要搜索引擎的时候需要中文输入法,这个时候,自动切换输入法可以帮助我们节省手动切换输入法的时间。

跟编辑器结合,主要是两种编辑器,一个是 idea 一个是 vscode

在idea中使用 vim

插件:

  • IdeaVim
  • IdeaVimExtension

我们需要在 用户目录下创建 .ideavimrc 文件, 并输入以下内容

set keep-english-in-normal 
set keep-english-in-normal-and-restore-in-insert
$ source ~/.ideavimrc

重启 idea 可以看到效果了。

IdeaVimExtension插件的文档: 为IdeaVim插件增加自动切换为英文输入法的功能 输入法自动切换功能不会默认启用 编辑器中normal模式下输入输入下面的指令以启用自动切换输入法功能:

:set keep-english-in-normal 开启输入法自动切换功能
:set keep-english-in-normal-and-restore-in-insert 回到insert模式时恢复输入法
:set nokeep-english-in-normal-and-restore-in-insert 保留输入法自动切换功能,但是回到insert模式不恢复输入法
:set nokeep-english-in-normal 关闭输入法自动切换功能

也可以通过将set keep-english-in-normal[-and-restore-in-insert]加入到~/.ideavimrc文件中并重启IDE来启用插件功能。 注意:支持MacOS和Windows, 通过fcitx-remote支持Linux MacOS需要开启英语美国键盘或ABC键盘 Windows需要开启英语美国键盘 Linux需要使用fcitx输入法,通过fcitx-remote切换 在macOS中,normal模式的输入法可以通过keep_input_source_in_normal 来设置,例如let keep_input_source_in_normal="com.apple.keylayout.ABC"

在vscode中使用 vim

参考 vscode 插件: https://github.com/VSCodeVim/Vim#input-method

环境

  • mac
  • 下载 vscodevim插件
  • im-select

安装 im-select

$ git clone https://github.com.cnpmjs.org/daipeihust/im-select.git
$ mv im-select/im-select-mac/out/im-select /usr/local/bin/
$ chmod 777 /usr/local/bin/im-select

查看当前输入法

$ /usr/local/bin/im-select
com.apple.keylayout.ABC

全局配置 settings.json

"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.ABC",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"

settings.json 参数解析:

参数解析
vim.autoSwitchInputMethod.enable控制是否自动切换
vim.autoSwitchInputMethod.defaultIM默认的输入法,其实就是在Normal模式下需要输入法
vim.autoSwitchInputMethod.obtainIMCmd获得当前输入法的命令
vim.autoSwitchInputMethod.switchIMCmd切换输入法的命令,{im}代表要切换到输入法名,其实就是设置的defaultIM

至此 vscode vim 自动切换输入法就完成了。

--完--