更新日志
  • 2022-11-07:针对 macbook M1 CPU 设置添加说明,添加 smartim 插件使用。

Vim/Neovim 下输入中文最大的痛就是需要频繁从中文模式切换到英文模式,来输入 Vim 的各种命令。本文总结几款插件,可以帮助我们在 macOS、Windows 下,离开 insert 模式的时候自动切换到英文输入。

macOS

vim-barbaric

vim-barbaric 是一款帮助用户自动设置输入法模式的插件。

安装依赖

在 macOS 下,需要额外安装 xkbswitch-macosx

curl -o /usr/local/bin/xkbswitch https://raw.githubusercontent.com/myshov/xkbswitch-macosx/master/bin/xkbswitch

在 macOS M1 芯片下,以上预编译的 binary 文件无法适用(仅针对 intel cpu),可以使用 这里 提供的 fork,自行编译,然后放到 /usr/local/bin 目录。

插件安装使用

然后使用插件管理器安装该插件即可:

Plug 'rlue/vim-barbaric'

该插件开箱即用,无需额外设置。

vim-xkbswitch

另外一款插件是 vim-xkbswitch

安装依赖

这个插件也需要安装 xkbswitch-macosx,参考上面的安装步骤。另外该插件依赖 libxkbswitch-macosx,需要安装该库:

curl -o /usr/local/lib/libxkbswitch.dylib https://github.com/myshov/libxkbswitch-macosx/raw/master/bin/libxkbswitch.dylib

如果使用的 M1 芯片的 mac,则需要自己编译,参考 这个 issue,使用如下命令编译:

gcc -dynamiclib libxkbswitch.c -o bin/libxkbswitch.dylib

把生成的动态库放到 /usr/local/lib 下面:

cp bin/libxkbswitch.dylib /usr/local/lib

插件安装使用

首先安装该插件:

Plug 'lyokha/vim-xkbswitch'

最后,在 Neovim 配置中加入下面的设置即可:

let g:XkbSwitchEnabled = 1

smartim

使用 packer.nvim 安装如下:

use { "ybian/smartim", event = { "InsertEnter" }, config = function ()
        -- default IME mode
        vim.g.smartim_default = "com.apple.keylayout.ABC"
    end}

Note that we should set variable smartim_default based on our case. We can run the im-select executable without argument to get current mode:

./plugin/im-select

Windows

neuims

Windows 下可以安装 neuims:

if g:is_mac
  Plug 'lyokha/vim-xkbswitch'
elseif g:is_win
  Plug 'Neur1n/neuims'
endif

然后使用命令 IMSToggle 打开这个插件的功能。打开功能以后,使用 ESC 离开插入模式,输入法会自动切换到 US keyboard 模式,重新按 i 进入插入模式,会切换到之前的输入法 (注意是切换到了输入法的默认状态,如果输入法默认状态是英文输入,在中文输入状态,按 ESC 离开插入模式,再进入插入模式,输入法处于英文输入状态,目前似乎还不支持切换到输入法上次使用的状态,不过这已经比较好了)。