VSCode VIM 插件的中文输入法自动切换

更新日期: 2025-06-23 阅读次数: 21 字数: 729 分类: Vim

在 VSCode 中使用 VIM 插件写代码时,经常会因为当前在中文输入法下,导致各种奇怪的现象。 例如,

  • 切换到 Normal 模式后,按字母键,会出现中文输入法的提示框。
  • Normal 模式下,想按下 i 键进入 Insert 模式,结果是在中文输入法下,即输入了奇怪的东西。

非常之不爽,我一度想放弃 VIM 插件,甚至干脆不用中文 🥲,但是,这不现实,因为好多界面需要中文描述。

解决思路

在 VIM 插件退出 Insert 模式时,自动切换回英文输入法。

VSCode VIIM 插件的官方文档里,恰好有相关的配置。参考:

https://github.com/VSCodeVim/Vim#input-method

Input Method: Disable input method when exiting Insert Mode.

配置项

  • vim.autoSwitchInputMethod.enable:是否启用自动切换输入法功能。默认值为 true。
  • vim.autoSwitchInputMethod.defaultIM:默认的输入法,注意这里 Mac 和 Windows 的配置不一样。
  • vim.autoSwitchInputMethod.obtainIMCmd: 获取当前输入法的命令的路径。例如 im-select,需要安装这个命令行工具。
  • vim.autoSwitchInputMethod.switchIMCmd: 切换输入法的命令。需要加上 {im} 占位符,表示目标输入法。

Windows 配置示例

"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "1033",
"vim.autoSwitchInputMethod.obtainIMCmd": "D:\\apps\\im-select.exe",
"vim.autoSwitchInputMethod.switchIMCmd": "D:\\apps\\im-select.exe {im}"

im-select.exe 的下载地址

注意,github 上 im-select 的下载地址在这里,项目 readme 里的链接 404。

https://github.com/daipeihust/im-select/issues/72

Windows 下输入法的 ID

在 Windows 下,输入法的 ID 是一个数字。可以通过以下命令获取当前输入法的 ID:

> im-select.exe
1033

> im-select.exe
2052
  • 1033 是英文输入法。即英文键盘输入法
  • 2052 是中文输入法。即切换到中文输入法,例如,微信输入法。注意,如果在中文输入法下,即便是切换为英文输入,仍然是中文输入法,也是返回 2052。

如何修改配置文件

图形化的配置界面,看不太懂。不如直接修改配置文件,更简单直观。

ctrl + shift + p 打开命令面板,输入 settings.json,选择 User Settings,开配置文件。 实际就是一个 json 文件。

User Settings 跟 Workspace Settings 的区别是前者是全局配置,后者是当前工作区的配置。

修改后的效果

会发现,只要按下 ESC 键退出 Insert 模式,输入法就会自动切换回英文输入法。 非常完美。

但是,目前还是有一些小瑕疵

  • 切换速度还是慢,不敢操作快了
  • 如果是切换到英文键盘,再去其他应用里输入中文,还需要切换中英文键盘。我才知道切换中英文输入法的快捷键早已不是 ctrl + space, 而是 win + space。我 out 了
  • 不知道为何每次输入中文标点符号时,都会自动输入两个相同的标点符号 😅

微信关注我哦 👍

大象工具微信公众号

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式