VS Code Vim 自动切换输入法

使用 Vim 编程还得考虑输入法的切换,真的很折磨!这篇文章给出了 Win 环境下 VS Code Vim 自动切换输入法的配置方法

真正的导火索是因为 VS Code 更新到 1.101 后 Vim 插件出了十分离奇的 BUG,在 normal 模式下如果使用的是中文输入法,会直接将字符进行覆盖,同时在 insert 模式下输入表达还会出现重复输入的问题:VSCodeVim/issues/9668。不过故事的结尾还是以回退 VS Code 版本为结局的,因为我发现不只是 Vim,其他插件也抽风了。

在本机上配置

VS Code Vim 官方的配置教程

下面我按照官方的配置方法,给出 Win 环境下的配置说明

1. 下载 im-select

im-select 仓库的地址

流程如下:

  1. 下载 im-select 的可执行文件:im-select.exe(x64 版本的官方链接失效了,该链接为 32 位版本)

  2. 下载 Git Bash:Git for Windows(由于微软的 Bug,im-select.exe 不能在 cmd 中直接运行,需要在 Git Bash 中运行)

  3. 以上两者安装完成后,在 Git Bash 中执行以下命令:

    1
    /path/to/im-select.exe

    对于 Win10 下官方的美式键盘,上述命令的输出为 1033。

    使用如下命令

    1
    /path/to/im-select.exe 1033

    即可通过命令行将当前输入法切换为英文输入法(美式键盘)。

2. 修改 VS Code 的设置

在用户设置的 json 文件中(user>settings.json)增加以下配置以完成自动输入法的切换功能:

1
2
3
4
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.obtainIMCmd": "D:\\APP\\im-select\\im-select.exe",
"vim.autoSwitchInputMethod.switchIMCmd": "D:\\APP\\im-select\\im-select.exe {im}",
"vim.autoSwitchInputMethod.defaultIM": "1033",

使用 ssh 时的配置

在使用远程时,上述自动切换输入法的设置会不起作用,这也算是插件的 BUG。

需要在远程设置的 json 文件中(machine>settings.json)也做上述修改,才能实现自动切换输入法的功能。因为 VS Code 在远程时会读取远程机器上的配置文件,但 Vim 插件实际上是在本地运行的。

参考链接

一篇关于在 VS Code 中使用 Vim 的教程,写的蛮有意思:


VS Code Vim 自动切换输入法
http://ciliphen.github.io/VS-Code-Vim-自动切换输入法/
作者
Felix
发布于
2025年6月13日
更新于
2025年8月18日
许可协议